安卓状态栏文字颜色修改

在安卓6.0,增加了SYSTEM_UI_FLAG_LIGHT_STATUS_BAR这个Flag字段,可以设置状态栏的字体为深色,不是一直默认的白色了。在浅色背景的沉浸式状态栏中很有必要。

安卓状态栏文字颜色修改_第1张图片
SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.png

从官方文档可以看到如何使用

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

这里有个前提,window必须是FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS(绘画模式)且一定不能是FLAG_TRANSLUCENT_STATUS(半透明模式)
注:在8.0跟6.0系统上测试过,8.0这个并没有要求,6.0确实是需要这个前提。附测试相关代码

 getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);//设置绘画模式
 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);//清除绘画模式
 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//设置半透明模式
 getWindow().clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);//清除半透明模式

另在一Activity多Fragment,各Fragment之间字体效果可能要求不同,需动态设置字体颜色

 if (isDark) {
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);//黑色
 } else {
    getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);//白色
 }

你可能感兴趣的:(安卓状态栏文字颜色修改)