项目中 单个activity 对应多一个fragment 其中两个fragment做了换肤,导致原先统一的黑色状态栏字体 ,在深色皮肤背景下无法正常识别。由于是同一个activity中的状态栏,首先想到是通过调用activity的方法在fragment切换时动态调整状态栏字体黑/白颜色。
多方参考资料整理如下
public void setStatusBarTextColor(boolean isDark){
if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.M){
//6.0以上
View decorView = getWindow().getDecorView();
if (decorView != null) {
int vis = decorView.getSystemUiVisibility();
if (isDark) {
vis = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
} else {
vis = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_VISIBLE;
}
decorView.setSystemUiVisibility(vis);
}
}
}
-
View.SYSTEM_UI_FLAG_VISIBLE:显示状态栏,Activity不全屏显示(恢复到有状态的正常情况)。
-
View.INVISIBLE:隐藏状态栏,同时Activity会伸展全屏显示。
-
View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏显示,且状态栏被隐藏覆盖掉。
-
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏显示,但状态栏不会被隐藏覆盖,状态栏依然可见,Activity顶端布局部分会被状态遮住。
-
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-
View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
-
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隐藏虚拟按键(导航栏)。有些手机会用虚拟按键来代替物理按键。
-
View.SYSTEM_UI_FLAG_LOW_PROFILE:状态栏显示处于低能显示状态(low profile模式),状态栏上一些图标显示会被隐藏。
参考链接:
https://blog.youkuaiyun.com/qq_28484355/article/details/78588276
https://blog.youkuaiyun.com/a872822645/article/details/78316121