最近设计突然整改了这个app样式风格,需要打开app的时候将状态栏背景变成白色,字体改为黑色。
一般app的默认字体颜色都是白色,其实Google有给出修改方案,也很简单。
public static void setAndroidNativeLightStatusBar(Activity activity, boolean dark) {
View decor = activity.getWindow().getDecorView();
if (dark) {
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
} else {
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
}
}
dark为true的时候为深色,false为浅色。
有个问题是这样设置后,activity整个页面会沉浸进去,需要加上这个的代码:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
View content = ((ViewGroup) findViewById(android.R.id.content)).getChildAt(0);
if (content != null) {
content.setFitsSystemWindows(true);
}
}
或者直接在根布局设置FitsSystemWindows为true;
或者直接弄个空布局用来占位。
我用的第一种。
本以为这样相安无事,但是有个巨大的坑,切换Activity状态栏闪烁。在性能比较好的机器上不是很明显,我在两个测试机上表现的闪烁程度不一,小米5c闪烁的尤为明显,华为mate8稍微好点。
我在网上找了一个解决办法:

在应用主题中加入这个属性: <item name="android:windowIsTranslucent">true</item>
确实有效果,但是华为mate8却闪退了,不知道有什么更好的解决办法没有,暂时没找到了。
网友评论