更新到 support-v7:27.1.0 时 activity 的状态栏变为黑色而不是透明

Statusbar of activity black instead of transparent when updating to support-v7:27.1.0

我的应用程序上有三个活动。 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) 并非如此。任何人都知道这里可能出了什么问题?提前致谢!

我 "solved" 通过降级到 support-v27.0.2。不幸的是,这是其中一个 (not-so-rare) 案例,其中 Google 更改了某些内容但没有在任何地方记录它。

我遇到了同样的问题,但有一点不同:我的状态栏完全是白色而不是黑色。

当我第一次尝试升级到 support-v27.1.0 时,由于坚持使用 support-v27.0.2,我遇到了 "solved" 这个问题。然而,support-v27.1.1 现已发布,问题仍然存在,因此这不太可能是 google 的错误,因此需要适当修复。

对我有用的解决方案与 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>