2014-10-20 11 views
36

W Androidzie 4.4 KitKat można ustawić paski statusu i nawigacji jako przezroczyste z elementami motywu android:windowTranslucentStatus i android:windowTranslucentNavigation, a następnie pod pasami okno aplikacji zostanie rozszerzone i dodany zostanie gradient . Jednak na Androidzie 5.0 Lollipop zostało to zmienione, a teraz zamiast gradientu dodawany jest stały przezroczysty kolor. Android 5.0 oferuje nowe android:statusBarColor i android:navigationBarColor elementy w nowym materiałem tematu, ale podczas próby ustawić te elementy @android:color/transparent okno aplikacja nie zostanie przedłużony, a jeśli używasz android:windowTranslucentStatus i android:windowTranslucentNavigation następnie android:statusBarColor i android:navigationBarColor są ignorowane.Android 4.4 przezroczysty pasek stanu i paski nawigacyjne w systemie Android 5.0

Czy brakuje mi czegoś opisanego na http://developer.android.com/training/material/theme.html#StatusBar?

enter image description here

Odpowiedz

63

Ustaw android:windowTranslucentStatus do fałszywe i ustawić android:statusBarColor do @android:color/transparent.

Następnie dodaj poniższy kod:

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

Jeśli też chcesz pasku nawigacyjnym, aby być przezroczyste, ustawić android:navigationBarColor do @android:color/transparent i połączyć flagę View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION również.

Nie eksperymentowałem na pasku nawigacyjnym, ale zadziała.

+1

Świetnie! Działa to zarówno dla paska System, jak i paska nawigacji. Nie rozumiem, dlaczego nie jest to nigdzie wyjaśnione w oficjalnej dokumentacji. Dzięki. – AxeEffect

+1

Dzięki, zadziałało idealnie! – Spotlight

+1

Nie jestem pewien, dlaczego, ale getWindow(). GetDecorView(). SetSystemUiVisibility ( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN); sprawia, że ​​zawiedzie mój kod. Muszę upewnić się, że NIE jest to w kodzie, aby działało. – easycheese

7

Dodaj poniżej linii do stylu:

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

Aby wyjaśnić @suckgamony's answer na to pytanie:

  • Under lizak i powyżej, ustawienie android:statusBarColor lub android:navigationBarColor do @android:color/transparent uczyni Pasek stanu lub Pasek nawigacyjny (odpowiednio) całkowicie przejrzyste, jeżeli:
  • android:windowTranslucentStatus lub android:windowTranslucentNavigation ustawiony jest prawdą w tym przypadku pasek stanu lub pasek nawigacji (odpowiednio) jest ustawiona na stałą koloru przezroczystego @AxeEffect opisano (ponownie, w ramach Lollipop i powyżej);
  • android:statusBarColor i android:navigationBarColor może być używany tylko z wersją Android 21 (Lollipop 5.0) lub nowszą. Jak opisano w the referred to answer, android:windowTranslucentStatus lub android:windowTranslucentNavigation w połączeniu z KitKat zapewniają przezroczyste gradienty zamiast pełnej przezroczystości.
Powiązane problemy