当前位置: 首页 > 编程笔记 >

Android系统更改状态栏字体颜色

康弘义
2023-03-14
本文向大家介绍Android系统更改状态栏字体颜色,包括了Android系统更改状态栏字体颜色的使用技巧和注意事项,需要的朋友参考一下

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

 类似资料:
  • 问题内容: 我正在尝试将状态栏的颜色更改为蓝色或其他某种颜色。 这可能吗,或者Apple不允许吗? 问题答案: 注意:此解决方案在iOS 13及更高版本下失败。 Plist中的第一个设置为 输出屏幕截图如下

  • 在Android 5.0的指南中,导航栏似乎是可定制的:http://www . Google . com/design/spec/layout/structure . html # structure-system-bars 如何更改导航栏的颜色?我想用白色的。 编辑:在我的资源中,我测试了这种风格: 但是按钮是白色的。我想作为第二个图像相同的渲染器。

  • 对于ios 13,我无法设置状态栏的文本颜色。如何查看statusBarManager?如何仅更改文本颜色? 由于: 由于未捕获的异常“NSInternalInconsistencyException”而终止应用程序,原因是:“UIApplication上调用了-statusBar或-statusBarWindow的应用程序:由于不再有状态栏或状态栏窗口,必须更改此代码。”。“请使用“场景”窗口上

  • 在我的一个活动中,我使用更改了工具栏的颜色。但在使用的5.0设备上,颜色是活动主题中的的颜色,所以我有两种非常不同的颜色,看起来不太好。 我意识到在5.0中可以使用,但没有这个功能。 所以我的问题是在5.0中,如何用更改状态栏颜色?

  • 嘿,我正在尝试改变状态栏的颜色,使其与动作栏的颜色相同(可能是透明的)。在Android Lolipop上,这不是问题,但在Kitkat上,它看起来像这张图片 我尝试了许多其他的解决方案,但仍然没有解决它。 以下是V19XML样式

  • 如果你认为它重复了一些其他的问题,那么我应该让你现在我已经尝试了3,4页的谷歌搜索,也实现了他们。