2014-10-20 227 views
36

在Android 4.4 KitKat上,您可以將狀態和導航欄設置爲透明,android:windowTranslucentStatusandroid:windowTranslucentNavigation主題元素,然後在應用程序窗口的下方條形框中添加漸變。然而,在Android 5.0 Lollipop中,這已經改變了,現在不是漸變,而是添加了純色透明色。是Android 5.0提供了在新材料主題的新android:statusBarColorandroid:navigationBarColor元素,但是當你嘗試將這些元素設置爲@android:color/transparent沒有擴展應用程序窗口,如果您使用android:windowTranslucentStatusandroid:windowTranslucentNavigation然後android:statusBarColorandroid:navigationBarColor被忽略。Android 4.4半透明Android 5.0上的狀態和導航欄樣式

我錯過http://developer.android.com/training/material/theme.html#StatusBar上描述的內容嗎?

enter image description here

回答

63

設置android:windowTranslucentStatus並設置android:statusBarColor@android:color/transparent

然後添加代碼如下:

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

如果您還想要導航欄是半透明的,設置android:navigationBarColor@android:color/transparent並結合標誌View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION爲好。

我沒有在導航欄上進行實驗,但它會工作。

+1

太棒了!這適用於系統和導航欄。我不明白爲什麼在官方文檔中沒有解釋這一點。謝謝。 – AxeEffect 2014-10-26 16:43:22

+1

謝謝,它工作完美! – Spotlight 2014-10-30 20:08:27

+1

我不知道爲什麼,但getWindow()。getDecorView()。setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);使我的代碼失敗。我必須確保這不是在代碼中才能使其工作。 – easycheese 2014-11-15 00:22:30

7

添加下面一行到你的風格:

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

爲了澄清@suckgamony's answer這個問題:

  • 在棒棒糖及以上,設置android:statusBarColorandroid:navigationBarColor@android:color/transparent將使狀態欄導航欄(分別)是完全透明的,除非:
  • android:windowTranslucentStatusandroid:windowTranslucentNavigation被設置爲真,在這種情況下狀態欄導航(分別)被設定爲實心透明顏色@AxeEffect描述(同樣,下棒棒糖及以上);
  • android:statusBarColorandroid:navigationBarColor只能與Android版本21(Lollipop 5.0)或更高版本一起使用。如在the referred to answer,android:windowTranslucentStatusandroid:windowTranslucentNavigation中所述,當與Kitkat一起使用時提供透明漸變而不是完全透明。
相關問題