我想要白色状态栏,也希望状态栏图标与暗默认颜色。但是现在状态栏的颜色是白色的,但是状态栏图标的颜色没有改变为暗的默认颜色。我的主题代码
值-v23/styes.xml
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:windowLightStatusBar">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:statusBarColor">@android:color/white</item>
</style>
我将windowLightStatusBar设置为在所有设备上都能正常工作,而不是在MI电话中工作。
<item name="android:windowLightStatusBar">true</item>
我附上了MI设备和intex设备的截图。在MI设备中,状态栏图标以白色显示,在intex设备中,显示为暗默认颜色。
发布于 2017-05-19 21:30:33
public static boolean setMiuiStatusBarDarkMode(Activity activity, boolean darkmode) {
Class<? extends Window> clazz = activity.getWindow().getClass();
try {
int darkModeFlag = 0;
Class<?> layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");
Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");
darkModeFlag = field.getInt(layoutParams);
Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);
extraFlagField.invoke(activity.getWindow(), darkmode ? darkModeFlag : 0, darkModeFlag);
return true;
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
setMiuiStatusBarDarkMode(YourBaseActivity.this,true);
就像一种魅力。
发布于 2019-02-15 15:23:56
从docs https://developer.android.com/reference/android/R.attr#windowLightStatusBar
要使其生效,窗口必须使用
windowDrawsSystemBarBackgrounds
绘制系统条形图背景,而状态栏必须不被要求使用windowTranslucentStatus
半透明。
https://stackoverflow.com/questions/43963206
复制