Android状态栏在使用AppTheme.NoActionBar时是透明的

当我通过android:theme自动生成AppTheme.NoActionBar应用于我的活动时,如下所示:

AndroidManifest.xml中:

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="mypackage"> <application ... android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:theme="@style/AppTheme.NoActionBar" /> </application> </manifest> 

我的MainActivity在顶部显示一个透明的状态栏,最终有一个白色的背景,白色的文字。 如果设备正在充电,那是唯一可以看到的符号。

Transparent ActionBar

从AppTheme.NoActionBar透明的ActionBar

这是我的值/ styles.xml:

 <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="AppTheme.NoActionBar"> <item name="windowActionBar">false</item> <item name="windowNoTitle">true</item> </style> <style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/> <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/> </resources> 

在第二种样式中,您可以看到AppTheme.NoActionBar ,它默认inheritance了AppTheme,但无论哪种风格都没有指定状态栏应该是透明的。

Solutions Collecting From Web of "Android状态栏在使用AppTheme.NoActionBar时是透明的"

有机会,如果你遇到过这个问题,你有一个名为values-v21的文件夹,在其中有一个名为styles.xml的文件。 此文件为使用API 21+Android 5.0+ )的设备定义样式。 这个文件也很可能包含下面的样式名为AppTheme.NoActionBar 。 听起来有点熟?

值-V21 / styles.xml:

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

AppTheme.NoActionBar是在问题提供的values / styles.xml中定义的,该文件仍然有效,但该文件仅用于API 21下的设备。 如果你看看这个代码,只要看到这个单词透明就可以马上识别这个问题。 在左边一点,我们看到statusBarColor和瞧。 这是问题。 如果您不想为更新的用户提供此样式,则可以简单地删除该样式。

值-V21 / styles.xml:

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

这是删除样式的结果:

固定的结果

好ol'不透明状态栏