2014-10-20 16 views
36

Su Android 4.4 KitKat è possibile impostare le barre di stato e di navigazione trasparenti con gli elementi del tema android:windowTranslucentStatus e android:windowTranslucentNavigation e quindi sotto le barre la finestra dell'app viene estesa e viene aggiunto un gradiente . Tuttavia su Android 5.0 Lollipop questo è stato modificato e ora al posto del gradiente viene aggiunto un colore trasparente uniforme. Android 5.0 offre nuove e android:statusBarColorandroid:navigationBarColor elementi sotto il nuovo tema materiale, ma quando si tenta di impostare questi elementi per @android:color/transparent finestra applicazione non è esteso, e se si utilizza android:windowTranslucentStatus e android:windowTranslucentNavigation poi android:statusBarColor e android:navigationBarColor vengono ignorati.Stile traslucido per Android 4.4 Stato e barre di navigazione su Android 5.0

Mi manca qualcosa descritto su http://developer.android.com/training/material/theme.html#StatusBar?

enter image description here

risposta

63

Impostare android:windowTranslucentStatus-falso e impostare android:statusBarColor-@android:color/transparent.

Quindi aggiungere il codice qui sotto:

getWindow().getDecorView().setSystemUiVisibility(
     View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); 

Se si desidera anche la barra di navigazione per essere traslucido, impostare android:navigationBarColor-@android:color/transparent e combinare la bandiera View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION pure.

Non ho sperimentato sulla barra di navigazione ma funzionerà.

+1

Grande! Funziona sia per il sistema che per la barra di navigazione. Non capisco perché questo non è spiegato da nessuna parte sulla documentazione ufficiale. Grazie. – AxeEffect

+1

Grazie, ha funzionato perfettamente! – Spotlight

+1

Non sono sicuro del perché ma getWindow(). GetDecorView(). SetSystemUiVisibility ( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); fa fallire nel mio codice. Devo assicurarmi che questo NON sia nel codice per farlo funzionare. – easycheese

7

Aggiungi sotto la linea al vostro stile:

<item name="android:windowTranslucentStatus">true</item> 
<item name="android:windowTranslucentNavigation">true</item> 
2

Per chiarire @suckgamony's answer a questa domanda:

  • Sotto Lollipop e soprattutto, impostando android:statusBarColor o android:navigationBarColor-@android:color/transparent farà il Barra di stato o Barra di navigazione (rispettivamente) completamente trasparente, a meno che:
  • android:windowTranslucentStatus o android:windowTranslucentNavigation vale true, nel qual caso la barra di stato o barra ricerca (rispettivamente) è impostato il colore trasparente solido @AxeEffect descrive (di nuovo, sotto Lecca-lecca e sopra);
  • android:statusBarColor e android:navigationBarColor possono essere utilizzati solo con la versione 21 di Android (Lollipop 5.0) o successiva. Come descritto in the referred to answer, android:windowTranslucentStatus o android:windowTranslucentNavigation quando utilizzato con Kitkat fornisce gradienti trasparenti anziché trasparenza completa.
Problemi correlati