2015-04-14 15 views
16

Ho un'applicazione che utilizza l'attributo tema (colorPrimaryDark) per colorare la barra di stato su Android V21 +:Modifica barra di stato di colore quando si entra in modalità contestuale azione

enter image description here

Questo sta lavorando bene. Ora, quando l'utente lungo preme un elemento della lista ed entra nella modalità di azione contestuale, sono in grado di colorare l'attributo bar CAB utilizzando actionModeBackground in modo che assomiglia a questo:

enter image description here

Quindi la barra delle operazioni è grigio, che è quello che voglio, ma la barra di stato è ancora colorata usando il tema di colore scuro. Non voglio quello, voglio cambiarlo in grigio scuro o nero.

Come posso fare questo? Non vedo alcun attributo tema che funzioni qui.

+0

Hai provato [Window.setStatusBarColor()] (http://developer.android.com/reference/android/view/Window.html#setStatusBarColor%28int%29)? – AndroidEx

+0

Dovrebbe essere gestito attraverso i temi come tutti gli altri colori ... In caso contrario, devo gestire in modo programmatico il cambiamento del colore della barra di stato e la sua modifica, il che non ha molto senso per me. –

+0

Vuoi dire che in realtà vuoi cambiare il valore dell'attributo 'colorPrimaryDark', piuttosto che il colore della barra di stato direttamente? – AndroidEx

risposta

30
private int statusBarColor; 

    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      //hold current color of status bar 
      statusBarColor = getWindow().getStatusBarColor(); 
      //set your gray color 
      getWindow().setStatusBarColor(0xFF555555); 
     } 
     ... 
    } 

    ... 

    @Override 
    public void onDestroyActionMode(ActionMode mode) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      //return to "old" color of status bar 
      getWindow().setStatusBarColor(statusBarColor); 
     } 
     ... 
    } 
}); 
+4

C'è un modo per farlo attraverso xml (stili)? Ho cercato, ma non ho trovato una soluzione funzionante. – Mikhail

+0

Un problema per me con questa soluzione è che CAB e la barra di stato non cambiano colore allo stesso tempo. C'è un modo per far sì che entrambi cambino colore contemporaneamente? – nibarius