关于状态栏颜色与官方新Layout对状态栏颜色的自适应更改

第一个颜色值为默认颜色值,会影响到某些官方提供的主题的背景色,如toolbar的默认主题背景色。

第二个颜色值为状态栏默认颜色值,新出的Layout在设置了fitSystemWindow属性后会将状态栏更改为这个颜色。

第三个颜色值为某些组件的默认字体颜色,如AlertDialog的按钮颜色,ProgressDialog的转圈图颜色。


第四个值为安卓5.0及以上特有的属性,可以通过它设置状态栏的颜色,开启状态栏透明后就是它会变成透明。


fitSystemWindow属性在默认情况下(新出的布局,如DrawerLayout、CoordinatorLayout等重写了相关函数,实现了额外功能)会根据系统组件(如状态栏、底部导航栏、输入法等)动态在View里面加入相应大小的Pading值。

新出的布局,如DrawerLayout、CoordinatorLayout等,在设置了fitSystemWindow属性后,会根据需要更改状态栏等系统组件的颜色,。它提供的状态栏颜色由colorPrimaryDark提供等配置。如会将状态栏颜色更改为style里面的colorPrimaryDark的值。


安卓4.4对于状态栏的修改很单调。只能将状态栏更改为透明模式,并且组件上移占用statusbar的空间,状态栏颜色等同于顶部组件颜色。将顶部组件设置为fitSystemWindow属性后可以在组件中添加相应的padingTop值,达到下移回来的效果。状态栏背景色依然为该组件颜色。

window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
        | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);


安卓5.0后增加了额外的方法(4.4的方法依然兼容),可以直接设置状态栏的颜色、设置是否占用状态栏空间。

getWindow.setStatusBarColor(Color.TRANSPARENT);
getWindow.setNavigationBarColor(Color.TRANSPARENT);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);


安卓6.0又增加了可以将状态栏字体颜色更改为黑色,以适应浅色背景,所以只有6.0的系统状态栏可以舒适的使用浅色背景色。

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值