将SDK设置为27后,状态栏颜色始终为灰色

问题描述 投票:3回答:4

由于使用sdk 26或27,任何遇到状态栏问题的人总是灰色的?我最近更新了Android Studio并使用27作为我的目标sdk,现在每个启动的Activity都有一个灰色状态栏。我没有改变风格或主题,但它们总是灰色的。

另一个有趣的发展是我的MainActivity在那里有一个导航抽屉,它没有问题呈现我的主要颜色的半透明状态。但是我从那里发起的每个Activity都有灰色状态栏。我完全迷失了为什么,但我假设它是SDK版本,因为我以前没有问题。

每个Activity都引用此样式,该样式曾用于MainActivity和所有其他Activity:

<style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:windowTranslucentStatus">true</item>
</style>

我可以通过删除半透明标志并在xml中手动设置状态栏颜色来解决灰色问题。然而,这现在打破了半透明状态栏下的MainActivity导航抽屉开口(它只是纯色)。在一个完美的世界里,我希望所有活动中的半透明状态栏都超过我的原色。

任何帮助,将不胜感激!

更新:如果我使用SDK 27并用它更新支持依赖项,我可以确认问题是否已经显现。如果我回到SDK 26版本,问题似乎就消失了。是否有一些我们需要注意的与27特别相关的东西?

android android-navigation-drawer android-statusbar
4个回答
4
投票

在styles.xml(v21)中添加以下行:

<item name="android:statusBarColor">@color/PrimaryDark</item>

它可以解决您的问题。


3
投票

正如我在评论中所说,我遇到了一个类似的问题,只是在API27中才开始表现出来。状态栏不是特别灰色的 - 它只是透明的。

我特别的解决方案是我的styles.xml文件夹中的values-v21如下: -

  <style name="AppTheme.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

删除android:statusBarColor行为我解决了这个问题。

我发布这个答案的原因是,在早期的API版本中,这个iffy行没有影响状态栏 - 这本身可能是一个单独的问题。似乎这个问题已在API27中得到修复,这就是为什么状态栏现在显得透明。


1
投票

API 27也存在同样的问题。

在styles.xml(v21)中我有:

    <style name="AppTheme.NoActionBar">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowActivityTransitions">true</item>
    </style> 

然后我在我的应用程序的根布局中添加了这个:

       android:background="@color/colorPrimary"
       android:fitsSystemWindows="true"

这解决了我的问题。

我正在使用第二个CoordinatorLayout按照this answer的建议包装AppBar,因为它没有显示AppBar在状态栏上的阴影

我可以看到问题是根qazxsw poi是在状态栏后面绘制的,白色作为背景,但AppBar不是。

编辑:经过一些测试,我可以说在styles.xml(21)中使用:@android:color / transparent

CoordinatorLayout

并在我的根布局中使用:

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

产生更好的色彩感。


1
投票

它仍然无法在SDK 28中起作用,但设置背景是解决此问题的一个很好的方法,例如:

   android:background="@color/colorPrimaryDark"
© www.soinside.com 2019 - 2024. All rights reserved.