Android O上切换状态栏颜色的问题
有些东西不起作用;我不知道这是仿真器的问题还是安卓Oreo上的bug(我没有安卓Oreo的物理设备),但我不能像棉花糖那样从黑暗状态栏切换到光明状态栏主题 styles.xml(来自api 23):Android O上切换状态栏颜色的问题,android,android-6.0-marshmallow,android-theme,android-8.0-oreo,Android,Android 6.0 Marshmallow,Android Theme,Android 8.0 Oreo,有些东西不起作用;我不知道这是仿真器的问题还是安卓Oreo上的bug(我没有安卓Oreo的物理设备),但我不能像棉花糖那样从黑暗状态栏切换到光明状态栏主题 styles.xml(来自api 23): ?属性/颜色初级 ?属性/颜色初级 真的 ?属性/颜色初级 ?属性/颜色初级 假的 这在安卓M上运行得很好,当我用setTheme()更改主题时,但在安卓O中,一旦我切换到灯光主题,它就不再更改,状态栏保持黑暗(windowLightStatusBar=true)/:这一定是一个错误,我已经向谷
?属性/颜色初级
?属性/颜色初级
真的
?属性/颜色初级
?属性/颜色初级
假的
这在安卓M上运行得很好,当我用
setTheme()
更改主题时,但在安卓O中,一旦我切换到灯光主题,它就不再更改,状态栏保持黑暗(windowLightStatusBar=true)/:这一定是一个错误,我已经向谷歌报告了()
我使用这些代码来临时解决这个问题
// fix windowLightStatusBar not changed after applyStyle on Android O
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
final TypedArray a = obtainStyledAttributes(new int[]{android.R.attr.windowLightStatusBar});
final boolean windowLightStatusBar = a.getBoolean(0, false);
a.recycle();
int flag = getWindow().getDecorView().getSystemUiVisibility();
if (windowLightStatusBar) {
flag |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
} else {
flag &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
getWindow().getDecorView().setSystemUiVisibility(flag);
}
这个变通方法对我很有效;它同样适用于
windowLightNavigationBar
。请注意,如果您使用的是applyDayNight()
,它也会重新创建活动,因此此解决方案提到的代码仍应转到您的onCreate()
方法。
// fix windowLightStatusBar not changed after applyStyle on Android O
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
final TypedArray a = obtainStyledAttributes(new int[]{android.R.attr.windowLightStatusBar});
final boolean windowLightStatusBar = a.getBoolean(0, false);
a.recycle();
int flag = getWindow().getDecorView().getSystemUiVisibility();
if (windowLightStatusBar) {
flag |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
} else {
flag &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
}
getWindow().getDecorView().setSystemUiVisibility(flag);
}