Android 5.0上的Android 4.4半透明状态和导航栏样式

时间:2014-10-20 20:16:46

标签: android statusbar navigationbar android-5.0-lollipop

在Android 4.4 KitKat上,您可以使用android:windowTranslucentStatusandroid:windowTranslucentNavigation主题元素将状态和导航栏设置为透明,然后在条形图下方展开应用程序窗口并添加渐变。然而,在Android 5.0 Lollipop上,这已经改变了,现在代替了渐变,添加了坚固的透明色。 Android 5.0在新的Material主题下提供了新的android:statusBarColorandroid:navigationBarColor元素,但是当您尝试将这些元素设置为@android:color/transparent时,应用程序窗口不会扩展,如果您使用{{ 1}}和android:windowTranslucentStatus然后忽略android:windowTranslucentNavigationandroid:statusBarColor

我错过了http://developer.android.com/training/material/theme.html#StatusBar上描述的内容吗?

enter image description here

3 个答案:

答案 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这个问题:

  • 在Lollipop及以上 下,将android:statusBarColorandroid:navigationBarColor设为@android:color/transparent将设为状态栏导航栏(分别)完全透明,除非:
  • android:windowTranslucentStatusandroid:windowTranslucentNavigation设置为true,在这种情况下,状态栏导航栏(分别)设置为实体透明色@AxeEffect描述(再次,在棒棒糖及以上);
  • android:statusBarColorandroid:navigationBarColor只能与Android版本21(Lollipop 5.0)或更高版本一起使用。正如the referred to answer中所述,android:windowTranslucentStatusandroid:windowTranslucentNavigation与Kitkat一起使用时,提供透明渐变而非完全透明。