动态设置和移除半透明状态栏标志

3
我正在开发一款适用于Android Lollipop系统的应用程序。我使用以下代码来设置状态栏颜色:
首先,我设置了这个标志:WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS,然后…… getWindow().setStatusBarColor(Color.RED); 但是我的应用程序需要动态设置FLAG_TRANSLUCENT_STATUS,当我设置了这个标志后,它能完美地显示透明状态栏。但是,当我想要改变状态栏颜色时,WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS标志就不起作用了。
2个回答

3

要添加或删除FLAG_TRANSLUCENT_STATUS标志,请使用以下内容:

window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);            
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

1

当您的应用在Lollipop上运行且活动主题继承自Theme.AppCompat.Light.DarkActionBar时,默认情况下启用状态栏着色。

据我所知,FLAG_TRANSLUCENT_STATUS仅在Android KitKat上需要对状态栏进行着色。

因此,在您的情况下,您可以简单地使用

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().setStatusBarColor(yourColor);
}

在您的活动中使用任何您喜欢的颜色(当然包括黑色 ;) )


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接