状态栏颜色设置无效[Lollipop]

3
我该如何更改状态栏颜色?我正在使用5.0版本进行构建,我的目标sdk是21,但这段代码不起作用...
setContentView(R.layout.main_activity);
if (Build.VERSION.SDK_INT >= 21){
    try {
        getWindow().setStatusBarColor(Color.RED);

    } catch (Exception e) {
        e.printStackTrace();
    }
}   

您的设备使用的是什么操作系统? - Orest Savchak
@OrestSavchak 棒棒糖 - 124697
只是好奇,你为什么在这里使用try和catch?也许你可以分享一下你的build.gradle文件和styles.xml文件中的代码。 - ztan
1个回答

11

文档中提到setStatusBarColor方法需要满足以下条件才能生效:

 

"为使其生效,窗口必须使用FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS来绘制系统栏背景,并且不能设置FLAG_TRANSLUCENT_STATUS标志。"

因此,我使用了以下代码(请注意"addFlags"行):

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        getWindow().setStatusBarColor(Color.RED);
    }

但这也保持了状态栏的高度水平。 - Abdalrahman Shatou

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