欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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系统更改状态栏字体颜色的相关代码,希望对大家的学习有所帮助。

上一篇:

下一篇: