更新到support-v7:27.1.0时,活动状态栏为黑色而不是透明

时间:2018-03-04 20:43:48

标签: android android-support-library androiddesignsupport

我的应用程序上有三个活动。 MainActivity的布局是带有fitsSystemWindows="true"的DrawerLayout。另外两个活动的根元素是具有相同属性的CoordinatorLayout。我为清单中的所有活动定义了android:launchMode="singleTop"

所有活动都使用相同的主题AppTheme,该主题具有以下属性:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:navigationBarColor">@color/colorPrimaryDark</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowBackground">@color/background</item>
    <item name="android:colorBackground">@color/background</item>
</style>

这适用于MainActivity,但不适用于状态栏为黑色的其他两个(而不是应该是透明的)。支持库的先前版本(v7:27.0.2)不是这种情况。任何人都知道这里可能有什么问题吗?提前谢谢!

2 个答案:

答案 0 :(得分:3)

我有同样的问题,稍微扭曲:我的状态栏是完全白色而不是黑色。

当我第一次尝试升级到support-v27.0.2时,我坚持使用support-v27.1.0解决了这个问题。但是,support-v27.1.1现已发布并且问题仍然存在,因此谷歌不太可能出现这种错误,因此需要进行适当的修复。

对我有用的解决方案正如Thomas Vos在OP下面的评论中所描述的那样。我认为值得在此提供更多详细信息,因为这似乎是最佳解决方案。

在“styles.xml(v21)”中,你可能会有一个名为“AppTheme.NoActionBar”的样式,它看起来像这样:

<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>

如果您已经编辑了样式,显然可能还有其他项目,但无论您拥有什么,只需将以下内容添加到样式标记之间的列表底部。

状态栏应该恢复正常。

<item name="statusBarBackground">?attr/colorPrimaryDark</item>

答案 1 :(得分:1)

我通过降级到support-v27.0.2来“解决”这个问题。不幸的是,这是谷歌改变某些东西并且没有在任何地方记录它的那些(不那么罕见)案例之一。