动态设置&删除TRANSLUCENT状态栏标志

时间:2014-12-31 11:41:26

标签: android android-5.0-lollipop material-design

我正在开发在Android Lollipop上运行的应用程序。我已使用以下代码设置状态栏颜色。

首先我设置此标志WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS&然后...

getWindow().setStatusBarColor(Color.RED);

但是我的应用需要动态设置FLAG_TRANSLUCENT_STATUS但是当我设置此标志时,它完美地显示透明状态栏。稍后,当我想要回显状态栏时,WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS标志不起作用

2 个答案:

答案 0 :(得分:2)

使用以下内容添加或删除FLAG_TRANSLUCENT_STATUS标记:

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

答案 1 :(得分:1)

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

AFAIK FLAG_TRANSLUCENT_STATUS只需要为Android KitKat上的状态栏添加颜色。

所以在你的情况下,你可以简单地使用

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

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