สีข้อความ ActionBar


288

ฉันจะเปลี่ยนสีข้อความของ ActionBar ได้อย่างไร ฉันได้รับชุดรูปแบบ Holo Light ฉันสามารถเปลี่ยนพื้นหลังของ ActionBar ได้ แต่ฉันไม่พบว่าแอททริบิวใดที่ปรับแต่งเพื่อเปลี่ยนสีข้อความ


ตกลงฉันสามารถเปลี่ยนสีข้อความด้วยแอททริบิวต์ android: textColorPrimary แต่มันก็เปลี่ยนสีข้อความของเมนูแบบเลื่อนลงที่แสดงเมื่อมีการโอเวอร์โฟลว์ที่ปุ่ม ActionBar ความคิดใด ๆ วิธีการเปลี่ยนสีของเมนูแบบเลื่อนลง / รายการ


เพิ่งโพสต์โซลูชันที่ใช้งานได้สำหรับฉัน ดูที่นี่stackoverflow.com/a/16175220/627827
spaceMonkey

คำตอบ:


447

ตกลงฉันได้พบวิธีที่ดีกว่า ตอนนี้ฉันสามารถเปลี่ยนสีของชื่อได้เท่านั้น คุณยังสามารถปรับแต่งคำบรรยายได้

นี่คือ styles.xml ของฉัน:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <style name="MyTheme" parent="@android:style/Theme.Holo.Light">
    <item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item>
  </style>

  <style name="MyTheme.ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar">
    <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
  </style>

  <style name="MyTheme.ActionBar.TitleTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
    <item name="android:textColor">@color/red</item>
  </style>
</resources>

32
นี่เป็นวิธีที่ถูกต้อง อย่างไรก็ตามเพื่อความมั่นคงคุณควรจะสืบทอดจากสำหรับWidget.Holo.Light.ActionBar MyTheme.ActionBarStyle
Jake Wharton

7
จะไม่สร้าง - ADT บ่นว่าต้องใช้ v13 ขึ้นไป (ดังนั้น ... จะไม่ทำงานบนโทรศัพท์มือถือ Android ส่วนใหญ่ :()
Adam

8
@ อดัมฉันมีปัญหาเดียวกัน แต่คำตอบต่อไปใช้ได้ผลสำหรับฉัน - แทนที่จะเป็น parent = "@ android: style / TextAppearance.Holo.Widget.ActionBar.Title" ใช้ parent = "@ android: style / TextAppearance"
bkurzius

8
หากคุณใช้ไลบรารี Appcompat ให้แทนที่ Holo ด้วย AppCompat มันทำงาน
หม่า

3
@LOG_TAG ใช้ Widget.AppCompat.Light.ActionBar
หม่า

97

ฉันพบวิธีที่ใช้งานได้ดีกับรสชาติใด ๆ ของActionBar( Sherlock , Compat , และNative ):

เพียงใช้htmlเพื่อตั้งชื่อและระบุสีของข้อความ ตัวอย่างเช่นในการตั้งค่าสีข้อความActionBar เป็นสีแดงให้ทำดังนี้

getActionBar()/* or getSupportActionBar() */.setTitle(Html.fromHtml("<font color=\"red\">" + getString(R.string.app_name) + "</font>"));

นอกจากนี้คุณยังสามารถใช้รหัสฐานสิบหกสีแดงแทนคำว่า#FF0000 redหากคุณกำลังมีปัญหากับเรื่องนี้ดูAndroid Html.fromHtml (String) ไม่ทำงานสำหรับ <font color = '#'> ข้อความ </ font>


นอกจากนี้หากคุณต้องการใช้ทรัพยากรสีรหัสนี้สามารถใช้ในการรับสตริง HEX ที่ถูกต้องและลบอัลฟาถ้าจำเป็น ( แท็กตัวอักษรไม่สนับสนุนอัลฟา):

int orange = getResources().getColor(R.color.orange);
String htmlColor = String.format(Locale.US, "#%06X", (0xFFFFFF & Color.argb(0, Color.red(orange), Color.green(orange), Color.blue(orange))));

สิ่งนี้ทำให้เกิดข้อผิดพลาดเนื่องจากคุณต้องใส่สตริงในวิธี Html.fromHtml () และคุณกำลังวางพารามิเตอร์หลายตัวในวิธีการ เมื่อแทนที่ "," โดย "+" สิ่งนี้จะทำงานได้อย่างสมบูรณ์ :-)
pinyin_samu

3
หลังจากค้นหามานานหลายทศวรรษนี่เป็นทางออกที่ง่ายที่สุด! เยี่ยมมาก!
bmkay

2
@MSI คุณสามารถใช้ค่าฐานสิบหกเกินไปเพียงแทนที่ด้วยred " + color + "
Phil

1
@MSI คุณสามารถลองสิ่งที่โพสต์นี้แนะนำ (อัปเดตคำถามของฉันด้วย) ได้ไหม เพียงแค่เปลี่ยนด้วย#FF0000 "+color+"
Phil

1
ขอบคุณ Phil มันทำงานได้สมบูรณ์แบบ! ฉันลองด้วยวิธีนี้: getSupportActionBar (). setTitle (Html.fromHtml ("<font color = '" + color + "'>" + "Home" + "</font>")); เพียงแค่ต้องใช้ 'แทนที่ \.
MSIslam

93

ฉันมีปัญหาเช่นเดียวกับคุณมันเป็นธีม Holo.Light แต่ฉันต้องการสไตล์สี ActionBar ดังนั้นฉันจึงจำเป็นต้องเปลี่ยนสีของข้อความเช่นกันและทั้ง Title และ Menus ดังนั้นในตอนท้ายฉันไปที่ git hub และดูซอร์สโค้ดจนกระทั่งฉันพบสไตล์ที่ถูกต้อง:

<?xml version="1.0" encoding="utf-8"?>
<!-- For honeycomb and up -->
<resources>

    <style name="myTheme" parent="@android:style/Theme.Holo.Light">
        <item name="android:actionBarStyle">@style/myTheme.ActionBar</item>
        <item name="android:actionMenuTextColor">@color/actionBarText</item>
    </style>

    <style name="myTheme.ActionBar" parent="@android:style/Widget.Holo.Light.ActionBar">
        <item name="android:background">@drawable/actionbarbground</item>
        <item name="android:titleTextStyle">@style/myTheme.ActionBar.Text</item>
    </style>

    <style name="myTheme.ActionBar.Text" parent="@android:style/TextAppearance">
        <item name="android:textColor">@color/actionBarText</item>
    </style>

</resources>

ดังนั้นตอนนี้สิ่งที่คุณต้องทำคือกำหนดทุกสิ่ง@color/actionBarTextและ@drawable/actionbarbgroundคุณต้องการ!


ฉันต้องใช้ xml นี้ที่ไหน ค่าหรือ values-v11 หรือค่า v-14 ??
DroidLearner

คำตอบคือจาก feb / 2012 ไม่มี V14 ตรงเวลา ดังนั้น V11 แน่นอน
Budius

ต่ำกว่า 3.0 ระบบไม่มี actionBar
Budius

ฉันใช้ Action Bar Sherlock และฉันพบวิธีแก้ปัญหา ขอบคุณ :)
DroidLearner

3
สำหรับ actionbar sherlock คุณต้องใช้ชื่อเฉพาะของ actionbar และคุณสามารถใช้ตัวสร้างนี้: jgilfelt.github.com/android-actionbarstylegeneratorเรามักจะใช้มันในที่ที่ฉันทำงาน เป็นเรื่องที่ดีมาก
Budius

67

ActionBar ID ไม่สามารถใช้งานได้โดยตรงดังนั้นคุณต้องทำการแฮ็กข้อมูลเล็กน้อยที่นี่

int actionBarTitleId = Resources.getSystem().getIdentifier("action_bar_title", "id", "android");
if (actionBarTitleId > 0) {
    TextView title = (TextView) findViewById(actionBarTitleId);
    if (title != null) {
        title.setTextColor(Color.RED);
    }
}

1
NullPointerExceptionในบรรทัดนี้actionBarTextView.setTextColor(Color.RED);
DroidLearner

3
ในกรณีที่คุณใช้งาน API ระดับ <11, ActionBarSherlock และคุณต้องการประหยัดค่าใช้จ่ายในการโทรgetIndentifier()คุณสามารถ(TextView) findViewById(com.actionbarsherlock.R.id.abs__action_bar_title);ตรวจสอบก่อนได้
อังเดร

"ActionBar ID ไม่สามารถใช้งานได้โดยตรง" จริง ๆ แล้วในกรณีของฉันแถบเครื่องมือสามารถเข้าถึงได้ง่ายเหมือนกับToolbar toolbar = findViewById(R.id.toolbar);ที่อยู่ในรูปแบบไฟล์ xml ซึ่งล้อมรอบด้วยcom.google.android.material.appbar.AppBarLayoutองค์ประกอบดังนั้นtoolbar.setTitleTextColor( getResources().getColor( R.color.colorViolet ) );
YoussefDir

32

เป็นหัวข้อเก่า แต่สำหรับผู้อ่านในอนาคตการใช้ ToolBar ทำให้ทุกอย่างง่ายมาก:

Toolbar toolbar = (Toolbar) findViewById(R.id.tool_bar);
toolbar.setTitle(R.string.app_name);
toolbar.setTitleTextColor(getResources().getColor(R.color.someColor));
setSupportActionBar(toolbar);


28

เพิ่มลงในรูทของแถบการกระทำ ฉันมีปัญหานี้

<style name="ActionBar" parent="@style/Theme.AppCompat.Light">
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="actionMenuTextColor">@color/stdDarkBlueText</item>
</style>

<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="titleTextStyle">@style/ActionBarTitleText</item>
    <item name="subtitleTextStyle">@style/ActionBarSubTitleText</item>
</style>

<style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/stdDarkBlueText</item>
    <item name="android:textSize">12sp</item>
</style>

<style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
    <item name="android:textColor">@color/stdDarkBlueText</item>
    <item name="android:textSize">12sp</item>
</style>

actionMenuTextColor - เปลี่ยนสีข้อความสำหรับข้อความของแถบการกระทำมันไม่เคยทำงานเมื่อมันเป็นส่วนหนึ่งของWidget.Styled.ActionBarดังนั้นฉันจึงต้องเพิ่มลงในราก คุณลักษณะ 2 อย่างอื่นเปลี่ยนชื่อและคำบรรยายของแถบการกระทำ


ใช้ "android: actionMenuTextColor" แทน "actionMenuTextColor" :)
AnkitRox

20

การตั้งค่าสตริง HTML บนแถบแอ็คชันไม่ทำงานบนธีม Material ใน SDK v21 +

หากคุณต้องการเปลี่ยนคุณควรกำหนดสีข้อความหลักใน style.xml ของคุณ

<resources>
    <!-- Base application theme. -->
    <style name="AppTheme" parent="android:Theme.Material.Light">
        <!-- Customize your theme here. -->
        <item name="android:textColorPrimary">@color/actionbar-text-color</item>
    </style>
</resources>    

1
สิ่งนี้จะเปลี่ยนสีข้อความหลักทุกที่ในแอปพลิเคชัน!
โมฮัมเหม็

16

วิธีที่ตรงไปตรงมาที่สุดคือการทำสิ่งนี้ใน styles.xml

แม่แบบ styles.xml ของ Google ในปัจจุบันสร้างสิ่งต่อไปนี้:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

หากคุณเพิ่มอีกหนึ่งบรรทัดก่อนหน้าแท็กปิดดังที่แสดงจะเปลี่ยนสีข้อความเป็นสิ่งที่ควรใช้กับ Dark ActionBar:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionBarTheme">@style/ThemeOverlay.AppCompat.Dark.ActionBar</item>
</style>

หากคุณต้องการปรับแต่งสีให้เป็นอย่างอื่นคุณสามารถระบุสีของคุณเองใน colors.xml หรือแม้กระทั่งใช้สีในตัวจาก Android โดยใช้ Android: แอตทริบิวต์ textColorPrimary:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionBarTheme">@style/AppTheme.AppBarOverlay</item>
</style>


<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">@android:color/darker_gray</item>
</style>

หมายเหตุ: สิ่งนี้จะเปลี่ยนสีของชื่อเรื่องและหัวเรื่องของเมนูรายการใด ๆ ที่แสดงใน ActionBar


12

ถ้าคุณต้องการจัดรูปแบบคำบรรยายคุณก็สามารถเพิ่มคำบรรยายในสไตล์ที่คุณกำหนดเองได้

<item name="android:subtitleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>

ผู้ที่กำลังมองหาผลลัพธ์เดียวกันสำหรับAppCompatห้องสมุดนี่คือสิ่งที่ฉันใช้:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="CustomActivityTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
        <item name="android:actionBarStyle">@style/MyActionBar</item>
        <item name="actionBarStyle">@style/MyActionBar</item>
        <!-- other activity and action bar styles here -->
    </style>

    <!-- style for the action bar backgrounds -->
    <style name="MyActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="android:background">@drawable/actionbar_background</item>
        <item name="background">@drawable/actionbar_background</item>
        <item name="android:titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
        <item name="android:subtitleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
        <item name="titleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
        <item name="subtitleTextStyle">@style/MyTheme.ActionBar.TitleTextStyle</item>
     </style>
    <style name="MyTheme.ActionBar.TitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
        <item name="android:textColor">@color/color_title</item>
      </style>
</resources>

ฉันกำลังพยายามหาชุดรูปแบบสีอ่อนแถบสีเข้มและข้อความสีขาว รหัสของคุณเป็นสิ่งเดียวที่ฉันพบจนถึงตอนนี้ที่มีผลกระทบใด ๆ เลย แต่มันเปลี่ยนเป็นแถบแอ็คชั่นสีขาวทั้งหมด ความคิดใด ๆ ที่อาจเกิดขึ้น? ใช่ฉันรู้ว่านี่เป็นเวลาหนึ่งปีครึ่งแล้ว :-)
nasch

สิ่งนี้ช่วยฉันแก้ปัญหาของฉัน ฉันแค่ต้องการเพิ่มทั้งสอง<item name="android:titleTextStyle"> และ <item name="titleTextStyle">เพราะฉันใช้ห้องสมุดสนับสนุน appcompat
Rock Lee

ชื่อหายไป
jairhumberto

9

พบวิธีที่จะทำได้อย่างดีโดยไม่ต้องสร้างเลย์เอาต์ของคุณเองบน API> = 21

มันจะเปลี่ยนสีข้อความและควบคุม drawable ภายในแถบการกระทำ

หวังว่ามันจะมีประโยชน์สำหรับใครบางคน

<!--Material design primary colors-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light">
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/accent</item>
    <item name="android:navigationBarColor">@color/primary_dark</item>
    <item name="actionBarTheme">@style/AppBaseTheme.Toolbar</item>
</style>

<!--Action bar-->
<style name="AppBaseTheme.Toolbar" parent="Widget.AppCompat.ActionBar.Solid">
    <item name="android:textColorPrimary">@color/action_bar_text</item>
    <item name="colorControlNormal">@color/action_bar_text</item>
</style>

7

คำตอบจำนวนมากถูกคัดค้านดังนั้นฉันจะอัปเดตเธรดและแสดงวิธีเปลี่ยนสีข้อความและสีพื้นหลังบน ActionBar (Toolbar) และในเมนูป๊อปอัพ ActionBar

แนวทางล่าสุดใน Android (ณ เดือนพฤษภาคม 2561) ในการทำงานกับ Action bar (Toolbar) คือการใช้ Theme with NoActionBar และใช้ Toolbar แทน

ดังนั้นนี่คือสิ่งที่คุณต้องการ:

  1. ในกิจกรรม (ซึ่งขยาย AppCompatActivity) ประกาศแถบเครื่องมือ:

    Toolbar myToolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(myToolbar);
  2. เพิ่มแถบเครื่องมือในเลย์เอาต์ xml ของกิจกรรม ที่นี่เราจะตั้งค่าแบบกำหนดเองของเรา (ธีมที่เขียนทับ), บันทึกandroid:theme="@style/ThemeOverlay.AppTheme.ActionBar"และapp:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu"พวกเขาจะทำเคล็ดลับ

    <android.support.v7.widget.Toolbar
    android:id="@+id/toolbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minHeight="?attr/actionBarSize"
    android:theme="@style/ThemeOverlay.AppTheme.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppTheme.PopupMenu"
    app:layout_constraintTop_toTopOf="parent" />
  3. ใน styles.xml ของคุณคุณจะต้องเขียนทับสองสไตล์เหล่านั้นเพื่อตั้งค่าสีที่กำหนดเอง:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionBarTheme">@style/ThemeOverlay.AppTheme.ActionBar</item>
    <item name="actionBarPopupTheme">@style/ThemeOverlay.AppTheme.PopupMenu</item>
    </style>
    
    <style name="ThemeOverlay.AppTheme.ActionBar" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:textColorPrimary">@color/action_bar_text_color</item>
    <item name="android:background">@color/action_bar_bg_color</item>
    </style>
    
    <style name="ThemeOverlay.AppTheme.PopupMenu" parent="ThemeOverlay.AppCompat.Dark.ActionBar">
    <item name="android:background">@color/popup_bg_color</item>
    <item name="android:textColorPrimary">@color/popup_text_color</item>
    </style>

นั่นคือคน

ป.ล. ถ้าคุณถามฉันฉันจะบอกว่า: ใช่สิ่งที่ชุดรูปแบบทั้งหมดนี้เป็นนรกของความยุ่งเหยิง


5

นี่เป็นวิธีที่ฉันใช้หลังจากตรวจสอบคำตอบทั้งหมด

<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorAccent">@color/Button_color</item>
    <item name="android:editTextStyle">@style/EditTextStyle</item>
    <item name="android:typeface">monospace</item>
    <item name="android:windowActionBar">true</item>
    <item name="colorPrimary">@color/Title_Bar_Color</item>
    <item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
    <item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>

</style>

<style name="EditTextStyle" parent="Widget.AppCompat.EditText"/>

<style name="Widget.Styled.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar">
    <item name="titleTextStyle">@style/ActionBarTitleText</item>
    <item name="android:background">@color/Title_Bar_Color</item>
    <item name="background">@color/Title_Bar_Color</item>
    <item name="subtitleTextStyle">@style/ActionBarSubTitleText</item>
</style>

<style name="ActionBarTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
    <item name="android:textColor">@color/solid_white</item>
    <item name="android:textSize">12sp</item>
</style>

<style name="ActionBarSubTitleText" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Subtitle">
    <item name="android:textColor">@color/solid_white</item>
    <item name="android:textSize">12sp</item>
</style>

เปลี่ยนสีที่ต้องการมันจะทำงาน


4

ฟังก์ชั่นนี้ใช้งานได้ดี

private void setActionbarTextColor(ActionBar actBar, int color) {

    String title = actBar.getTitle().toString();
    Spannable spannablerTitle = new SpannableString(title);
    spannablerTitle.setSpan(new ForegroundColorSpan(color), 0, spannablerTitle.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    actBar.setTitle(spannablerTitle);

}

จากนั้นให้ใช้เพียงป้อนแถบแอ็คชันของคุณและสีใหม่เช่น

ActionBar actionBar = getActionBar();    // Or getSupportActionBar() if using appCompat
int red = Color.RED
setActionbarTextColor(actionBar, red);

4

ลองเพิ่มสิ่งนี้ในกิจกรรมของคุณใน onCreate ใช้ได้กับ Android เกือบทุกรุ่น

 actionBar.setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));  

หรือ

getSupportActionBar().setTitle(Html.fromHtml("<font color='#ffff00'>Your Title</font>"));

คุณควรใส่สตริงดังนี้: String ColoredTitle = "<font color = '# FFFFFF'>" + Your_Title + "</font>"; Html.fromHtml (coloredTitle);
Tincho825

2

ลองใช้วิธีการมากมายใน API รุ่นต่ำวิธีที่เป็นไปได้คือ<item name="actionMenuTextColor">@color/your_color</item>และไม่ใช้เนมสเปซ Android หวังว่าจะช่วยคุณได้

PS:

  <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="actionMenuTextColor">@color/actionMenuTextColor</item>
</style>


0

ทางออกที่ดีคือการใช้ SpannableStringBuilder และตั้งค่าสีด้วยวิธีดังกล่าว คุณสามารถใช้สีต่าง ๆ ในส่วนต่าง ๆ ของสตริงเพิ่มรูปภาพ ฯลฯ

ทดสอบกับไลบรารีการสนับสนุนใหม่

ดูAndroid: การระบายสีส่วนหนึ่งของสตริงโดยใช้ TextView.setText ()?


0

นี่ไม่ใช่วิธีแก้ปัญหาที่แนะนำเนื่องจากฉันกำลังใช้งาน android apis ที่นี่ แต่เนื่องจากแอปพลิเคชันของฉันต้องเปลี่ยนธีมที่เปลี่ยนแปลงไปตามเงื่อนไข xml ที่เป็นไปไม่ได้ที่นี่ดังนั้นฉันต้องทำสิ่งนี้ แต่วิธีนี้ใช้งานได้ดีมาก

สารละลาย:--

 /**
 * 
 * @author Kailash Dabhi
 * @email kailash09dabhi@gmail.com
 *
 */ 
 public static void setActionbarTextColor(Activity activity, int color) {
    Field mActionViewField;
    try {
        mActionViewField = activity.getActionBar().getClass()
                .getDeclaredField("mActionView");
        mActionViewField.setAccessible(true);
        Object mActionViewObj = mActionViewField.get(activity
                .getActionBar());

        Field mTitleViewField = mActionViewObj.getClass().getDeclaredField(
                "mTitleView");
        mTitleViewField.setAccessible(true);
        Object mTitleViewObj = mTitleViewField.get(mActionViewObj);

        TextView mActionBarTitle = (TextView) mTitleViewObj;
        mActionBarTitle.setTextColor(color);
        // Log.i("field", mActionViewObj.getClass().getName());
    } catch (NoSuchFieldException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    } catch (IllegalArgumentException e) {
        e.printStackTrace();
    }

}

0

สำหรับ Android 5 (lollipop) คุณจะต้องใช้android: actionBarPopupThemeเพื่อตั้งค่าtextColorสำหรับเมนูโอเวอร์โฟลว์


0

วิธีที่ง่ายที่สุดคือ
เพิ่มสองบรรทัดเหล่านี้ไปยังไฟล์ styles.xml ของคุณ

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:textColorSecondary">@color/white</item>
<item name="android:textColor">@color/white</item>
</style>

แทนที่สีด้วยสีของคุณ


-1

คุณสามารถเปลี่ยนสีของข้อความใด ๆ โดยใช้แอตทริบิวต์html<font>โดยตรงในxmlไฟล์ ตัวอย่างเช่นในstrings.xml:

<resources>
    <string name = "app_name">
        <html><font color="#001aff">Multi</font></html>
        <html><font color="#ff0044">color</font></html>
        <html><font color="#e9c309">Text </font></html>
    </string>
</resources>

ป้อนคำอธิบายรูปภาพที่นี่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.