【问题标题】:Android 4.4 translucent Status and Navigation bars style on Android 5.0Android 5.0 上的 Android 4.4 半透明状态和导航栏样式
【发布时间】:2014-12-15 22:27:25
【问题描述】:

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

我是否遗漏了http://developer.android.com/training/material/theme.html#StatusBar 上描述的内容?

【问题讨论】:

    标签: android statusbar navigationbar android-5.0-lollipop


    【解决方案1】:

    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

    我没有在导航栏上进行实验,但它会起作用。

    【讨论】:

    • 太棒了!这适用于系统和导航栏。我不明白为什么官方文档中没有任何地方对此进行解释。谢谢。
    • 我不知道为什么但是 getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);使它在我的代码中失败。我必须确保它不在代码中才能使其工作。
    • 感谢这项工作,但条形图完全透明,而不是像 KitKat 中那样的柔和渐变。我应该添加自定义软渐变以达到这样的效果吗?谢谢
    • 是的,条形图将完全透明。然后最好添加一个渐变(作为另一个 FrameLayout 或 RelativeLayout 底部的 FrameLayout),就像 Android 4.4 上显示的那样,最重要的是导航栏。
    • @AxeEffect 你如何告诉包含渐变的视图在状态栏后面而不是在它下面开始?
    【解决方案2】:

    在您的样式中添加以下行:

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

    【讨论】:

      【解决方案3】:

      澄清@suckgamony's answer这个问题:

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

      【讨论】:

        猜你喜欢
        • 2015-04-07
        • 2014-01-17
        • 1970-01-01
        • 1970-01-01
        • 2017-07-16
        • 2015-06-22
        • 2014-01-01
        • 1970-01-01
        相关资源
        最近更新 更多