关于状态栏颜色与官方新Layout对状态栏颜色的自适应更改
2016-10-05 12:54
211 查看
第一个颜色值为默认颜色值,会影响到某些官方提供的主题的背景色,如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);
相关文章推荐
- 关于Android沉浸式状态栏字体颜色和图片背景自适应变化
- mfc更改状态栏的字体颜色
- 关于更改MYECLIPSE JS 代码背景颜色
- 【iOS开发-状态栏】关于怎么更改系统自带状态栏(变为白色或者隐藏)
- ios上 更改 状态栏(UIStatusBar)的颜色
- iOS更改UIStatus(状态栏)前景颜色
- Android官方网站关于的tab layout的一个问题
- IOS 如何更改导航栏样式及状态栏字体颜色(导航栏背景、前景、标题及返回字体颜色)
- ios上 更改 状态栏(UIStatusBar)的颜色
- ios上 更改 状态栏(UIStatusBar)的颜色,你值得一看、收藏
- ios上 更改 状态栏(UIStatusBar)的颜色,你值得一看、收藏
- 关于easyui的layout的region的resize的问题(自适应浏览器)
- 关于easyui的layout的region的resize的题目(自适应浏览器)
- ios如何更改顶部状态栏的颜色
- ios更改状态栏(UIStatusBar)的颜色 最新
- 关于 状态栏隐藏或着改变颜色
- 关于Android配色 自适应颜色的实现
- ios上 更改 状态栏(UIStatusBar)的颜色
- iOS开发,更改状态栏(StatusBar)文字颜色为白色