Android系统更改状态栏字体颜色
程序员文章站
2023-12-19 08:35:46
随着时代的发展,android的状态栏都不是乌黑一片了,在android4.4之后我们可以修改状态栏的颜色或者让我们自己的view延伸到状态栏下面。我们可以进行更多的定制化...
随着时代的发展,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>
以上就是android系统更改状态栏字体颜色的相关代码,希望对大家的学习有所帮助。
推荐阅读
-
Android系统更改状态栏字体颜色
-
Android编程实现获取当前系统语言及地区并更改语言的方法
-
Android实现修改状态栏背景、字体和图标颜色的方法
-
Android编程实现TextView字体颜色设置的方法小结
-
Android开发笔记 改变字体颜色的三种方法
-
Android编程实现获取系统内存、CPU使用率及状态栏高度的方法示例
-
android 字体颜色选择器(ColorPicker)介绍
-
Win7怎么更改系统字体大小 Win7自定义调整系统字体大小的方法
-
Android 实现不同字体颜色的TextView实现代码
-
Android Studio怎么自定义颜色?Android Studio更换字体大小颜色的方法