2012-04-08 3 views
37

Sto cercando di implementare ActionBarSherlock perché mi è stato detto che è relativamente facile da implementare e personalizzare. Ho scoperto che è stato abbastanza facile da implementare, ma sto cercando di cambiare il colore di sfondo di ActionBar e si sta dimostrando difficile.Change ActionBarSherlock background color

In base al sito (link), sembra possibile ereditare uno dei temi di ActionBarSherlock e quindi ignorare le proprietà necessarie.

Questo è quello che ho finora:

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
    <style name="Theme.ActionBar" parent="Theme.Sherlock.ForceOverflow"> 
     <item name="android:background">#000000</item> 
     <item name="background">#000000</item> 
    </style> 
</resources> 

sto notando il tema integrato utilizzano immagini per lo sfondo, ma sto pregando che non ho per creare immagini di cambiare il colore di sfondo

Grazie.

risposta

77

Il colore di sfondo della barra delle azioni è definito in uno stile per la barra delle azioni, non nel tema stesso. Avrai bisogno di fare qualcosa del genere:

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

<style name="Widget.MyTheme.ActionBar" parent="Widget.Sherlock.ActionBar"> 
    <item name="android:background">#ff000000</item> 
    <item name="background">#ff000000</item> 
</style> 

Fare attenzione ai colori definiti in XML. ColorDrawable non ha rispettato i limiti di visualizzazione su pre-Honeycomb, quindi se si utilizza la navigazione a schede con uno sfondo separato per la vista a schede sovrapposte si avranno problemi.

+0

Grazie per la risposta. Non sto usando tabs o altro, solo un singolo ActionBar con alcune azioni, quindi è ok usare i colori invece delle immagini? Sto usando ActionBarSherlock su 8 diverse app e non ho le competenze per creare immagini. –

+0

BTW, il tuo codice ha funzionato per aggiungere il colore di sfondo. Grazie. –

+0

È sicuro usare i colori finché non lo si utilizza per l'attributo di sfondo in pila. Lo sfondo regolare e lo sfondo diviso andranno bene ma su 3.0 precedenti l'uso di un colore per stack non verrà visualizzato correttamente. –

54

ho appena usato

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#00853c"))); 

E 'cambiato il colore di sfondo. Spero che sia d'aiuto.

+4

breve e dolce ... –

+2

@alicanbatur lo è, ma se hai intenzione di avere il tuo stile in ActionBar e usarlo lungo l'intera app, non è molto bello se incolli quella riga di codice in ogni classe in cui vuoi modificare lo sfondo :) – noloman

+0

Grazie per aver risparmiato molti sforzi. –

2

Il codice citato da Jake Wharton è vero. Ma quando si applica il codice al styles.xml potrebbe non funzionare se si dispone di minSDK < 11 perché Android: actionBarStyle è supportato in API-11 +

Per risolvere questo errore:

fare una cartella di valori-v11 nella cartella res e creare il file XML come menzionato sopra.

+1

Questo risolve solo il problema per> = 11. –