setstatusbarcolor之后的透明状态栏navigationdrawer

时间:2015-08-16 17:24:35

标签: android navigation-drawer

我尝试使用github上找到的模板开发带有导航抽屉的应用。

style.xml我有:

<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">#ff0000</item>
    <item name="colorPrimaryDark">#0000ff</item>

main

并且导航抽屉中的状态栏正常。 main

当我点击按钮时,它运行此命令: getWindow().setStatusBarColor(Color.GREEN); main

现在导航抽屉中的状态栏颜色不再是半透明的 main

如何将状态栏颜色恢复为半透明状态?

1 个答案:

答案 0 :(得分:0)

不同之处在于xml定义的颜色colorPrimarycolorPrimaryDark并未真正用于直接设置状态栏颜色。

实际上状态栏始终是完全透明的,只有底层View是彩色的。这就是为什么左边可以有另一种颜色而不是右边的颜色(看看你的第二个截图)。如果您现在致电getWindow().setStatusBarColor(..),您确实直接为状态栏着色并覆盖Views的颜色。所以它需要保持透明!

您真正想要做的是改变状态栏下面的View的颜色,这是通过ScrimInsetsFrameLayout类完成的。
请查看this questionthis class from the library you provided
在那里你应该找到所有必要的信息,只改变你想要的区域的颜色。

如果您真的只想重置颜色:

getWindow().setStatusBarColor(Color.TRANSPARENT);