更新到 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>
我的应用程序上有三个活动。 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>