2013-04-26 39 views
26

Mã của tôi như sau và khi nó hoạt động (khi tôi thay đổi Chủ đề gốc thành Chủ đề. Khóa hoặc Chủ đề.Sherlock.Light Theme nó thay đổi), nó không thay đổi màu Tiêu đề.Thay đổi Thanh Hành động Màu tiêu đề

Mã này được khá nhiều giống như here

Code:

<?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> 

Trả lời

35

Từ trang ActionBarSherlock Jake Wharton:

gương Thuộc tính

Do những hạn chế trong Hệ thống theming của Android gốc bất kỳ chủ đề nào tùy chỉnh phải được khai báo trong hai thuộc tính. Các thuộc tính android tiền tố thông thường áp dụng chủ đề cho thanh tác vụ gốc và các thuộc tính chưa được cố định là dành cho triển khai tùy chỉnh.

Đã phải thay đổi MyTheme.ActionBarStyle tới:

<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> 

Bây giờ màu sắc văn bản Title đã thay đổi.

+0

nhưng cảnh báo android: titleTextStyle yêu cầu cấp API 11 (hiện tại là 10) Tôi đang sử dụng ABC! Làm thế nào để sử dụng điều này trong khi chúng tôi đang sử dụng bằng cách sử dụng api cấp 10 bằng cách sử dụng ABS hoặc ABC –

+1

Làm việc cho tôi! Cảm ơn! – BostonGeorge

+2

@LOG_TAG bạn cần xác định nó trong tệp styles.xml riêng biệt trong thư mục values-v11, vì vậy API> = 11 sử dụng kiểu này và API <11 sử dụng kiểu trong thư mục giá trị – vanomart

46

tôi đã thay đổi màu sắc tiêu đề như

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

Đẹp hack .. làm việc tốt –

+1

tốt, hoạt động như một nét duyên dáng – yrazlik

+1

Cảm ơn @MilapTank .. làm việc tốt của nó – Basant

12

này Sử dụng mã dưới đây để cung cấp màu sắc khác nhau để actionbar văn bản và actionbar nền chỉ cần sử dụng bên dưới chủ đề trong manifest chống lại các hoạt động mà bạn muốn đầu ra :)

<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

trong tệp style.xml trong thư mục giá trị sẽ thay đổi màu thanh tác vụ của bạn. Thay thế # 666666 bằng mã màu đã chọn của bạn cho màu nền tiêu đề và thay thế # 000000 cho màu văn bản tiêu đề của bạn.

<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> 

sau đó không quên để chỉnh sửa file manifest của bạn -> android: theme = "@ 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

Tôi đã thử tất cả các phương pháp trên, nó không làm việc cho tôi. tôi vừa đạt được thông qua mã dưới đây ..

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

đơn giản như vậy làm việc đối với tôi là để thêm sau trong chủ đề phong cách:

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

Điều này là không đúng. Nó sẽ thay đổi toàn bộ màu văn bản của ứng dụng. – viper

Các vấn đề liên quan