2013-04-26 139 views
26

我的代碼如下,雖然它的工作原理(當我改變父主題,以Theme.Sherlock或Theme.Sherlock.Light主題它的變化)不會改變標題顏色。更改操作欄標題顏色

的代碼幾乎一樣here

代碼:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

<style name="MyTheme" parent="@style/Theme.Sherlock"> 
<item name="actionBarStyle">@style/MyTheme.ActionBarStyle</item> 
<item name="android:actionBarStyle">@style/MyTheme.ActionBarStyle</item> 
</style> 

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

<style name="MyTheme.ActionBar.TitleTextStyle" parent="@style/TextAppearance.Sherlock.Widget.ActionBar.Title" > 
    <item name="android:textColor">#FF0000</item> 
</style> 

</resources> 

回答

35

從傑克沃頓商學院的ActionBarSherlock網站:

鏡像的屬性

由於限制Android的主題系統幹任何主題 定製必須在兩個屬性中聲明。正常 Android的前綴屬性應用主題到本機操作欄 和前綴的屬性是自定義實現。

不得不改變MyTheme.ActionBarStyle到:

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

現在的標題文字顏色發生了變化。如下面這段代碼

actionBar.setTitle(Html.fromHtml("<font color='#ff0000'>ActionBarTitle </font>")); 
+0

但它使機器人警告:titleTextStyle需要API級別11(當前分鐘是10)我使用ABC!如何使用這個,而我們正在使用api級別10使用ABS或ABC – 2013-10-14 04:49:21

+1

爲我工作!謝謝! – BostonGeorge 2013-11-21 03:14:56

+2

@LOG_TAG你需要在不同的styles.xml文件中定義它的值-V11目錄下,這樣API> = 11使用這種風格和API <11使用樣式值目錄 – vanomart 2014-06-26 17:02:58

46

我已經改變標題顏色,以提供不同的顏色,以動作條的文字和動作條背景只需使用下面的主題清單中對要在其中活動的輸出:)

<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
     <item name="android:actionBarStyle">@style/MyActionBar</item> 
    </style> 

    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
     <item name="android:titleTextStyle">@style/TitleBarTextColor</item> 
     <item name="android:background">YOUR_COLOR_CODE</item> 
    </style> 

    <style name="TitleBarTextColor" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"> 
     <item name="android:textColor">YOUR_COLOR_CODE</item> 
    </style> 
+1

尼斯黑客..working精細 – 2015-09-28 12:33:07

+1

好的,就像一個魅力 – yrazlik 2016-01-13 19:33:38

+1

由於@MilapTank ..其工作的罰款 – Basant 2017-08-28 11:36:16

12

使用

1

在style.xml價值觀文件夾,這將改變你的動作條的顏色..與標題背景顏色所選顏色代碼替換#666666和替換#000000爲您的標題文字顏色。

<style name="MyTheme" parent="@android:style/Theme.Holo.Light"> 
    <item name="android:actionBarStyle">@style/NewActionBar</item> 
</style> 

<style name="NewActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> 
<item name="android:titleTextStyle">@style/TitleBarTextColor</item> 
<item name="android:background">#666666</item> 
</style> 
<style name="TitleBarTextColor" parent="@style/TextAppearance.Sherlock.Widget.ActionBar.Menu"> 
    <item name="android:textColor">#000000</item> 
</style> 

然後不要忘記編輯清單文件 - >安卓主題=「@風格/ NewTheme」

<application 
    android:allowBackup="true" 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/NewTheme" > 
    <activity 
     android:name="com.nearby.welcome.Splash" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

</application> 
4

我嘗試了所有上述的方法,它並沒有爲我工作。我通過下面的代碼實現..

Spannable text = new SpannableString(actionBar.getTitle()); 
text.setSpan(new ForegroundColorSpan(Color.BLUE), 0, text.length(), Spannable.SPAN_INCLUSIVE_INCLUSIVE); 
actionBar.setTitle(text); 
3

最簡單的方法,對我的工作是添加以下的主題風格:

<item name="android:textColorPrimary">@color/orange_dark</item> 
+1

這僅僅是不正確的。它會改變整個應用文本的顏色。 – viper 2016-12-06 07:50:40