2013-06-12 13 views
38

Sto usandoCambia Colore ActionBar di programmazione più di una volta

getSherlockActivity().getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff00ACED)); 

Per cambiare il colore della mia barra delle azioni in un frammento e funziona. Ma se apro questo frammento, apro un altro frammento che chiama questo metodo con un colore diverso, la barra di azione non cambia al colore desiderato. Invece diventa un colore bianco invece del colore su cui l'ho impostato.

risposta

71

questa è una soluzione rapida che ho trovato

mActionBar.setBackgroundDrawable(new ColorDrawable(0xff00DDED)); 
mActionBar.setDisplayShowTitleEnabled(false); 
mActionBar.setDisplayShowTitleEnabled(true); 
+0

Questo è successo solo per me su un solo dispositivo ... Lo sfortunato Motorola Xoom. Tuttavia, questo ha risolto il problema! Nel mio caso, la commutazione del titolo del titolo doveva essere invertita poiché non stavo mostrando il titolo per cominciare. – Justin

+0

Posso confermare che questo problema è stato risolto anche su un LG-P880g. Tu amico mio, sono fantastici! Grazie! – JVillella

+0

Ho dovuto usare una risorsa colore quando si utilizza la barra delle azioni di supporto. getSupportActionBar(). setBackgroundDrawable (new ColorDrawable (getResources(). getColor (R.color.swift))); –

11

Ho avuto lo stesso problema, answer from user1634451 lavorato ma solo una volta (non consentirebbe più interruttori di colore in una riga)

Questo sicuramente risolto:

bar.setBackgroundDrawable(new ColorDrawable(getResources() 
        .getColor(R.color.app_bar_online))); 

Invece di generare un collegamento diretto con il colore facendo new ColorDrawable(R.color.app_bar_online)

+0

questo è quello che stavo cercando :) –

+0

Sto usando 'ContextCompat' invece di' getResources', però, perché sto usando la libreria di supporto. Inoltre, 'getResources(). GetColor (int)' è deprecato ora. –

5

getColor è obsoleto. utilizzare ContextCompat:

bar.setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(context, R.color.app_bar_online))); 
+0

Grazie. Nel caso in cui chiunque scelga il colore da color-array, allora usa ** bodyColor [index] ** invece ** ContextCompat.getColor (context, R.color.app_bar_online) **. – CoDe

+0

Utilizzando questa soluzione, ottengo una NullPointerException a questo punto (anche un avvertimento da AS). Perché? – MUmla

4

Se si desidera impostare il colore del ActionBar e hanno il colore come una stringa, questo sembra funzionare per me.

getSupportActionBar().setBackgroundDrawable(
      new ColorDrawable(Color.parseColor("#993b3c4e"))); 

Potrebbe essere necessario abilitare & disattivare il titolo per farlo per aggiornare/visualizzare correttamente come nella risposta data dal user1634451, ma non ho bisogno di nel mio caso.

14

Prova questo,

Method1:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(0xff00FFED)); 

Method2:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(getResources() 
        .getColor(R.color.bg_color))); 

method3:

getSupportActionBar().setBackgroundDrawable(new ColorDrawable(Color.parseColor("#3A1212"))); 
Problemi correlati