欢迎使用CSDN-markdown编辑器

来源:互联网 发布:网络征婚骗局 编辑:程序博客网 时间:2024/06/06 07:31

MUI9 状态栏字体颜色修改为黑色

Android6.0以上才提供修改状态栏字体颜色的方法,然而魅族和小米在4.4以上就支持了字体字体颜色的改变,但必须使用它们自己定义的方法。

然而在使用MUI9后,发现小米的以前提供的方法已经无法修改字体颜色了。百度了许久,终于在MUI论坛中发现了适配MUI9的方法。

http://www.miui.com/forum.php?mod=viewthread&tid=8954811&extra=

小米给出的说法是

1.在 Android 6.0 以前,Android 没有方法可以实现「状态栏黑色字符」效果,因此 MIUI 自己做了一个接口;

2.在 Android 6.0 及以上版本,Android 提供了标准的方法实现「状态栏黑色字符」效果,但这个方法和 MIUI 的方法产生了冲突,所以当开发者使用 Android 标准方法时,没有出现预期的效果,这给很多开发者都造成了困扰,尤其是海外开发者。

解决方法:

1、在新的MUI版本,基于Android6.0,开发版7.7.13及以后的版本,使用

Window window = getWindow();window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

2、在旧的MUI版本,仍然要使用原有的方法

 public static boolean MIUISetStatusBarLightMode(Window window, boolean dark) {        boolean result = false;        if (window != null) {            Class clazz = window.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);                if (dark) {                    extraFlagField.invoke(window, darkModeFlag, darkModeFlag);//状态栏透明且黑色字体                } else {                    extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体                }                result = true;            } catch (Exception e) {            }        }        return result;    }
原创粉丝点击