随着时代的发展,Android的状态栏都不是乌黑一片了,在Android4.4之后我们可以修改状态栏的颜色或者让我们自己的View延伸到状态栏下面。我们可以进行更多的定制化了,然而有的时候我们使用的是淡色的颜色比如白色,由于状态栏上面的文字为白色,这样的话状态栏上面的文字就无法看清了。因此本文提供一些解决方案,可以是MIUI6+,Flyme4+,Android6.0+支持切换状态栏的文字颜色为暗色。
修改MIUI
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; }
上面为小米官方提供的解决方案,主要为MIUI内置了可以修改状态栏的模式,支持Dark和Light两种模式。
修改Flyme
public static boolean setMeizuStatusBarDarkIcon(Activity activity, boolean dark) { boolean result = false; if (activity != null) { try { WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); Field darkFlag = WindowManager.LayoutParams.class .getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON"); Field meizuFlags = WindowManager.LayoutParams.class .getDeclaredField("meizuFlags"); darkFlag.setAccessible(true); meizuFlags.setAccessible(true); int bit = darkFlag.getInt(null); int value = meizuFlags.getInt(lp); if (dark) { value |= bit; } else { value &= ~bit; } meizuFlags.setInt(lp, value); activity.getWindow().setAttributes(lp); result = true; } catch (Exception e) { } } return result; }
同理使用跟miui类似的方式
修改Android6.0+
Android 6.0开始,谷歌官方提供了支持,在style属性中配置android:windowLightStatusBar
即可, 设置为true时,当statusbar的背景颜色为淡色时,statusbar的文字颜色会变成灰色,为false时同理。
<style name="statusBarStyle" parent="@android:style/Theme.DeviceDefault.Light"> <item name="android:statusBarColor">@color/status_bar_color</item> <item name="android:windowLightStatusBar">false</item> </style>
目前为止,android6.0的市场占有率还很少,而MIUI和flyme在国内占有率还算可以,因此,我们可以尽自己所能,适配更多。如果你还有其他的奇淫技巧,也欢迎分享补充。
相关推荐
改变系统状态栏颜色和字体,提供完整工具类,一句话修改系统状态栏颜色,字体
android修改状态栏背景颜色、字体颜色,隐藏状态栏,状态栏透明 代码封装好,下载导入as运行即可
android状态栏颜色主题设置,直接使用设置主题状态栏主题,或者修改状态栏颜色
本篇文章主要介绍了Android实现修改状态栏背景、字体和图标颜色的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
详情链接:http://blog.csdn.net/mChenys/article/details/52768221
安卓 修改状态栏背景颜色 字体 布局(你还为电量栏丑陋而烦恼吗,只需一行代码,解决)
透明状态栏,兼容版本,不同布局,状态栏字体颜色修改,状态栏有透明阴影去掉
Android-ImmersionBar.zip,android 4.4以上沉浸式状态栏和沉浸式导航栏管理,适配横竖屏切换、刘海屏、软键盘弹出等问题,可以修改状态栏字体颜色和导航栏图标颜色,以及不可修改字体颜色手机的适配,适用于Activity...
增加一个方法:用于更改MIUIV6系统上的状态栏字体颜色 ,目前我仅仅只发现MIUIV6上可以更改,在android5.0上以及其它4.4以上系统没有发现可以更改字体颜色的代码 核心代码: public void setStatusBarDarkMode...
android systemui 修改状态栏日期。 Menampilkan tangGal di 状态栏 dgn berbagai opsi tampilan。 Meliputi -显示/隐藏 - 更改颜色 - 单行或两行模式 - 可调整字体大小 - 等状态栏时钟 - 颜色 - 格式(显示日期...
预览页单击缩放图片显示操作栏 拼图选择页 拼图选择页 拼图页 拼图页拼图功能 拼图页文字贴纸功能 文字贴纸编辑页 示例功能列表 示例功能列表 产品特色 兼容android 11 兼容android 10 支持复杂选择情况,如当...
APP状态栏颜色及字体颜色修改。描述:如果标题栏透明的,状态栏的颜色改为透明 和状态栏里字体颜色又怎么相应的修改颜色呢?我新建的项目(2019.6.5)可以直接运行,Demo支持android9.0,支持适配小米、华为、魅族等...
5.7 状态栏提醒 5.8 检索通讯录 5.8.1 实现原理 5.8.2 contentprovider介绍 5.8.3 具体实现 5.9 文件管理 5.10 还原手机桌面 5.11 置换背景图 5.12 修改和删除文件 5.12.1 实现原理 5.12.2 java i/o基本类库介绍 ...
这一联盟将会支持 Google 发布的 Android 手机操作系统或者应用软件,共同开发名为 Android 的 开 放源代码的移动系统。开放手机联盟包括手机制造商、手机芯片厂商和移动运营商几类。目前,联盟成员 数 量已经达到了...
5.8 状态栏的图标与文字提醒 200 5.9 搜索手机通讯录自动完成 203 5.10 取得联系人资料 207 5.11 制作有图标的文件资源管理器 210 5.12 还原手机默认桌面 215 5.13 置换手机后台图 217 5.14 获取...
5.8 状态栏的图标与文字提醒——NotificationManager与Notification对象的应用 5.9 搜索手机通讯录自动完成——使用ContentResolver 5.10 取得联系人资料——Provider.Contact的使用 5.11 制作有图标的文件资源管理...