2013-04-26 32 views
26

Il mio codice è il seguente e mentre funziona (quando cambio il tema principale in Theme.Sherlock o Theme.Sherlock.Light il tema che cambia) non cambia il colore del titolo.Cambia barra azioni Colore titolo

Il codice è più o meno lo stesso di here

Codice:

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

risposta

35

Dal sito ActionBarSherlock di Jake Wharton:

specchio Attributi

dovuta ai limiti della Android a tema arginare qualsiasi tema le personalizzazioni devono essere dichiarate in due attributi. I normali attributi con prefisso Android di applicano il tema alla barra di azione nativa e gli attributi non prefissati sono per l'implementazione personalizzata.

dovuto cambiare MyTheme.ActionBarStyle a:

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

Ora il colore del testo titolo è cambiato.

+0

ma avvisa android: titleTextStyle richiede il livello API 11 (min corrente è 10) Sto usando ABC! Come usarlo mentre stiamo usando il livello 10 dell'API usando ABS o ABC –

+1

Ha funzionato per me! Grazie! – BostonGeorge

+2

@LOG_TAG è necessario definirlo in un file styles.xml separato nella directory values-v11, quindi API> = 11 utilizza questo stile e l'API <11 utilizza gli stili nella directory dei valori – vanomart

46

ho cambiato colore titolo come questo

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

Bel trucco .. funziona bene –

+1

buono, funziona come un fascino – yrazlik

+1

Grazie @MilapTank .. funziona bene – Basant

12

Usa sotto il codice per fornire colore diverso per ActionBar testo e sfondo ActionBar basta usare sotto tema manifesta contro l'attività in cui si desidera l'uscita :)

<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

nel tuo style.xml nella cartella valori questo cambierà il colore della barra delle azioni. Sostituisci # 666666 con il codice colore selezionato per il colore di sfondo del titolo e sostituisci # 000000 per il colore del testo del titolo.

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

poi non dimenticare di modificare il file manifesto -> android: theme = "@ stile/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

Ho provato tutti i metodi di cui sopra, non ha funzionato per me. ho appena realizzato attraverso il codice seguente ..

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

più semplice modo in cui ha lavorato per me è quello di aggiungere quanto segue in stile tema:

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

Questo non è giusto. Cambierà l'intero colore del testo dell'applicazione. – viper

Problemi correlati