在Android 4.4 KitKat上,您可以使用android:windowTranslucentStatus
和android:windowTranslucentNavigation
主题元素将状态和导航栏设置为透明,然后在条形图下方展开应用程序窗口并添加渐变。然而,在Android 5.0 Lollipop上,这已经改变了,现在代替了渐变,添加了坚固的透明色。 Android 5.0在新的Material主题下提供了新的android:statusBarColor
和android:navigationBarColor
元素,但是当您尝试将这些元素设置为@android:color/transparent
时,应用程序窗口不会扩展,如果您使用{{ 1}}和android:windowTranslucentStatus
然后忽略android:windowTranslucentNavigation
和android:statusBarColor
。
我错过了http://developer.android.com/training/material/theme.html#StatusBar上描述的内容吗?
答案 0 :(得分:63)
将android:windowTranslucentStatus
设为 false 并将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 :(得分:7)
在您的样式中添加以下行:
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowTranslucentNavigation">true</item>
答案 2 :(得分:2)
澄清@suckgamony's answer这个问题:
android:statusBarColor
或android:navigationBarColor
设为@android:color/transparent
将设为状态栏或导航栏(分别)完全透明,除非:android:windowTranslucentStatus
或android:windowTranslucentNavigation
设置为true,在这种情况下,状态栏或导航栏(分别)设置为实体透明色@AxeEffect描述(再次,在棒棒糖及以上); android:statusBarColor
和android:navigationBarColor
只能与Android版本21(Lollipop 5.0)或更高版本一起使用。正如the referred to answer中所述,android:windowTranslucentStatus
或android:windowTranslucentNavigation
与Kitkat一起使用时,提供透明渐变而非完全透明。