android实现标题栏、状态栏图标文字颜色及背景动态变化
16lz
2021-01-23
1、只是activity实现沉浸式的状态
1、先在ActivityManifest.xml 中配置 activity的主题:android:theme="@style/Theme.AppCompat.Light.NoActionBar"
2、代码设置状态栏属性
(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN--全屏;View.SYSTEM_UI_FLAG_LAYOUT_STABLE--状态栏字体白色)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { Window window = getWindow(); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.setStatusBarColor(Color.TRANSPARENT);//设置状态栏背景是透明}
3、activity的根节点不要加
android:fitsSystemWindows="true"这个属性,加了就会有状态栏展示;
2、activity中包含fragment切换,状态栏动态切换的问题
1、同上 android:theme="@style/Theme.AppCompat.Light.NoActionBar"
2.、使用代码设置不同fragment页面状态栏属性
@Overridepublic void onPageSelected(int position) { //改变状态栏的方法(系统5.0以上) switch (position) { case 0: setTransparentStatusBar(); break; case 1: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); } break; case 2: setTransparentStatusBar(); break; default: break; }}
public void setTransparentStatusBar() { if(Build.VERSION.SDK_INT >= 21) { Window window = getWindow(); window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LAYOUT_STABLE); window.setStatusBarColor(Color.TRANSPARENT); }}
3、(activity根节点一定 不要 不要 不要加android:fitsSystemWindows="true"这个属性)
fragment需要沉浸式时候,根节点加android:fitsSystemWindows="true"这个属性
如果只是像第二个页面一样,设置状态栏透明或者白色 ,状态栏字体是灰色 ,根节点不需要加android:fitsSystemWindows="true"
参考:https://www.jianshu.com/p/4a5ff4e2c298
更多相关文章
- ListView的一些属性
- 自定义类似于listView中Item背景
- Android 属性动画Property Animation(下)
- listview更改选中时item背景色的两种方式
- 关于android的animation的xml定义中的android:interpolator属性
- android背景选择器selected
- Android 文字链接 文字点击时的背景颜色
- android 中的 edittext属性大全
- Android学习笔记:androidmanifest.xml 高级属性