我正在尝试使用github上的模板开发带有导航抽屉的应用程序.
在style.xml我有:
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">#ff0000</item>
<item name="colorPrimaryDark">#0000ff</item>
并且导航抽屉中的状态栏正常.
当我单击按钮时,它运行此命令:
.getWindow()setStatusBarColor(Color.GREEN);
现在导航抽屉中的状态栏颜色不再是半透明的
恢复状态栏颜色如何变为半透明?
解决方法:
区别在于xml定义的颜色colorPrimary和colorPrimaryDark并不真正用于直接设置状态栏颜色.
实际上,状态栏始终是完全透明的,只有底层视图是彩色的.这就是为什么左边可以有另一种颜色而不是右边的颜色(看看你的第二个截图).如果现在调用getWindow().setStatusBarColor(..),您确实直接为状态栏着色并覆盖两个视图的颜色.所以它需要保持透明!
你真正想要做的是改变状态栏下面的View的颜色,这是通过ScrimInsetsFrameLayout类完成的.
看看this question和this class from the library you provided
在那里你应该找到所有必要的信息,只改变你想要的区域的颜色.
如果你真的只想重置颜色:
getWindow().setStatusBarColor(Color.TRANSPARENT);
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!