setStatusBarColor不工作[Lollipop]

cod*_*441 3 android

如何更改状态栏颜色?我用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();
    }
}   
Run Code Online (Sandbox Code Playgroud)

Ber*_*ťák 8

关于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);
    }
Run Code Online (Sandbox Code Playgroud)