安卓状态栏颜色设置

设置状态栏背景色:

getWindow().setStatusBarColor(getColor(R.color.D1));

通过这个设置可以修改状态栏背景色,但是如果设置黑色或者白色会有字体颜色和背景相同导致看不见文字的问题,下面设置字体颜色可以解决这个问题

设置状态栏字体颜色

安卓并不提供修改状态栏字体的sdk,系统根据页面风格自动处理字体颜色(前提:需要设置成NoActionBar,否则状态栏字体不随页面风格改变),所以我们可以通过设置页面风格简介设置状态栏字体颜色
Theme.AppCompat.NoActionBar
此时状态栏是白色字体
Theme.AppCompat.Light.NoActionBar
此时状态栏是黑色字体

我们也可以在代码中动态的改:
亮色模式:SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
浅色模式:
SYSTEM_UI_FLAG_VISIBLE

//设置字体黑色getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR)//设置字体白色getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE)

悬浮在内容区之上or顶部(配合设置透明色可实现沉浸式)

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)

沉浸状态栏

<color name="transparent">#00000000</color>

白色字体沉浸:

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            getWindow().setStatusBarColor(getColor(R.color.transparent));
        }

黑色字体沉浸:

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            getWindow().setStatusBarColor(getColor(R.color.transparent));
        }



作者:上冬_zhangjianhd
链接:https://www.jianshu.com/p/3ac0def0c154
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


若文章对您有帮助,帮忙点个赞!

0
0
发布时间 2022-08-31 21:10:03
0 条回复(回复会通过微信通知作者)
点击加载更多评论
登录 后再进行评论
(微信扫码即可登录,无需注册)