如何强制android绘制状态栏的背景?

时间:2018-07-29 20:37:30

标签: android material-design statusbar android-7.0-nougat android-statusbar

使用@GetMapping("/updateStudy/{studyId}") public String updateSchedulePage(@PathVariable Long studyId, Model model) { ..} 可以正确绘制我的应用程序的状态栏,但是当我设置android:targetSdkVersion="23"时,我的应用程序的状态栏的背景却无法在android 8.0上绘制(在棒棒糖上,状态栏可以正确地绘制,无论我在android:targetSdkVersion中设置了什么。这是我在活动中使用的样式:

android:targetSdkVersion="24"

我的活动是<style name="myTheme" parent="@android:style/Theme.Material.Light.NoActionBar"> <item name="android:windowDrawsSystemBarBackgrounds">false</item> <item name="android:editTextStyle">@style/myDefaultEditText</item> <item name="android:colorPrimary">#ff2b2e38</item> <item name="android:colorAccent">#ff0288d1</item> <item name="android:windowBackground">@drawable/splash_screen</item> <item name="android:statusBarColor">#ff0087b4</item> </style> 的后代。从 api 24 开始,状态栏看起来像透明的,我负责绘制背景。

api 24中引入了什么会导致此行为?但最重要的是,我如何强制android像lollipop一样绘制状态栏的背景?

1 个答案:

答案 0 :(得分:1)

Android将使用.unfold().valueMap()作为状态栏颜色。

colors.xml

colorPrimaryDark

v21 / styles.xml

<color name="colorPrimary">#22222a</color>
<color name="colorPrimaryDark">#191a20</color>

此外,您还应在常规styles.xml中包含向后兼容版本

styles.xml

<style name="myTheme" parent="@android:style/Theme.Material.Light.NoActionBar"> 
  <item name="android:colorPrimary">@color/colorPrimary</item>
  <item name="android:colorPrimaryDark">@color/colorPrimaryDark</item>
</style>

这将使您可以在较旧的设备上使用它。