【发布时间】:2018-05-06 15:35:23
【问题描述】:
我知道我可以使用colorPrimary 来确定@987654327@ 的颜色,并使用colorPrimaryDark 来确定状态栏的颜色。
我正在使用以下主题
<!-- Base application theme. -->
<style name="Theme.Noteplus.Base.Brown" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimaryLight</item>
<item name="colorPrimaryDark">#ff0000</item>
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
其中一个有趣的属性是,当我滑出导航菜单时,状态栏会自动变为透明。
在运行时,有时我想更改状态栏的颜色。
setTitle("Recycler bin");
toolbar.setBackgroundColor(Color.BLUE);
getWindow().setStatusBarColor(Color.parseColor("#5694FF"));
如下所示
很遗憾,当我们滑出导航菜单时,调用setStatusBarColor也会丢失状态栏的透明度属性。
我可以知道,如何在运行时更改状态栏颜色,而不会丢失其透明度属性?对于我的情况,在运行时将状态栏更改为蓝色后,当我滑出导航抽屉时,我希望看到状态栏透明度属性被保留。
更新
我试过了
private void setStatusBarColor(int color) {
if (Build.VERSION.SDK_INT >= 21) {
Window window = getWindow();
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(color);
}
}
导航抽屉滑出时提供透明度属性无济于事。
【问题讨论】:
-
你试过了吗? ActionBar bar = getActionBar(); bar.setBackgroundDrawable(new ColorDrawable(Color.parseColor("#004D40")));
-
我们已经做了
getWindow().setStatusBarColor(Color.parseColor("#5694FF"));,正如我的问题所述。 -
是的,这是 setBackgroundDrawable 不是 setColor
-
我们的应用中没有
ActionBar。我们使用Toolbar。getActionbar()将返回 null。 -
我很糟糕,我将操作栏与状态栏混淆了,我添加了一个答案,虽然我现在没有要测试的 AndroidStudio,但我认为它会有所帮助
标签: android android-layout android-view drawerlayout windowinsets