我试图以编程方式更改StatusBar
颜色,但没有成功。我正在使用MaterialDrawer库来创建导航抽屉。无法使用MaterialDrawer库更改StatusBar颜色
试过型动物的解决方案我在互联网上找到,但没有一个人的工作,状态栏始终显示primaryDark
编程尝试:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.setStatusBarColor(Color.BLUE);
}
与主题也试过:
if (dark)
setTheme(R.style.AppTheme_Dark_NoActionBar);
else
setTheme(R.style.AppTheme_NoActionBar);
<style name="AppTheme.Dark.NoActionBar" parent="MaterialDrawerTheme">
<item name="android:colorPrimary" tools:targetApi="lollipop">#ffffff</item>
<item name="android:colorPrimaryDark" tools:targetApi="lollipop">#cfcfcf</item>
<item name="android:statusBarColor">#cfcfcf</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:colorAccent" tools:targetApi="lollipop">@color/md_black_1000</item>
<item name="android:windowContentTransitions" tools:targetApi="lollipop">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="drawerArrowStyle">@style/MaterialDrawer.DrawerArrowStyle.Black</item>
<item name="android:datePickerDialogTheme">@style/DatePickerDialogThemeDark</item>
<item name="android:timePickerDialogTheme">@style/DatePickerDialogThemeDark</item>
</style>
<style name="AppTheme.NoActionBar" parent="AppTheme">
<item name="windowActionBar">false</item>
<item name="android:colorAccent" tools:targetApi="lollipop">@color/primary</item>
<item name="windowNoTitle">true</item>
<item name="android:statusBarColor">@color/colorPrimaryDark</item>
<item name="android:datePickerDialogTheme">@style/DatePickerDialogThemeLight</item>
<item name="android:timePickerDialogTheme">@style/DatePickerDialogThemeLight</item>
</style>
<style name="AppTheme" parent="MaterialDrawerTheme.Light">
<item name="android:colorPrimary" tools:targetApi="lollipop">@color/colorPrimary</item>
<item name="android:colorPrimaryDark" tools:targetApi="lollipop">@color/colorPrimaryDark
</item>
<item name="android:colorAccent" tools:targetApi="lollipop">@color/md_blue_300</item>
<item name="android:windowContentTransitions" tools:targetApi="lollipop">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowDrawsSystemBarBackgrounds" tools:targetApi="lollipop">true</item>
<item name="drawerArrowStyle">@style/MaterialDrawer.DrawerArrowStyle</item>
</style>
最后尝试使用这段代码的MaterialDrawer库:
drawer.getDrawerLayout().setStatusBarBackgroundColor(color);
drawer
是DrawerBuilder
的结果。该应用程序有2个原色,取决于用户放入登录/注册的一些变量。这种颜色是蓝色和白色。该应用程序很好,除了StatusBar只与primaryDark着色,即使我使用我上面发布的代码。我可以改变颜色的唯一方式是修改colorPrimary或者把这个放入颜色:
<color name="materialize_primary_dark">@color/md_red_500</color>
但作为primaryDark做它改变了颜色,我必须将它更改为白色的白模式和蓝色的蓝模式。
感谢。
删除茨艾伦部分 “window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);” 也许它的作品! –
尝试过,但颜色不变。我认为是从MaterialDrawer覆盖它,但我不知道。 – VictorBG