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

 更新时间:2016年01月10日 15:53:36   作者:Sam  
这篇文章主要介绍了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系统更改状态栏字体颜色的相关代码,希望对大家的学习有所帮助。

相关文章

  • 6步轻松实现两个listView联动效果

    6步轻松实现两个listView联动效果

    这篇文章主要为大家详细介绍了教大家通过6步轻松实现两个listView联动效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • Android SQLite数据库进行查询优化的方法

    Android SQLite数据库进行查询优化的方法

    这篇文章主要给大家介绍了关于Android SQLite数据库进行查询优化的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • 浅谈Android Dialog窗口机制

    浅谈Android Dialog窗口机制

    本文主要介绍了Android Dialog窗口机制,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-04-04
  • Android之Notification的多种用法实例

    Android之Notification的多种用法实例

    本篇文章主要介绍了Android之Notification的多种用法实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • 最常见的猜拳小游戏Android代码实现

    最常见的猜拳小游戏Android代码实现

    这篇文章主要为大家详细介绍了最常见的猜拳小游戏Android代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • Android仿微信照片选择器实现预览查看图片

    Android仿微信照片选择器实现预览查看图片

    这篇文章主要介绍了Android仿微信照片选择器实现预览查看图片的相关资料,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • Android实现截图分享qq 微信功能

    Android实现截图分享qq 微信功能

    在日常生活中,经常用到qq,微信截图分享功能,今天小编通过本文给大家介绍Android实现截图分享qq 微信功能,具体实现代码大家参考下本文
    2017-12-12
  • Android RecyclerView的卡顿问题的解决方法

    Android RecyclerView的卡顿问题的解决方法

    本篇文章主要介绍了Android RecyclerView的卡顿问题的解决方法,具有一定的参考价值,有兴趣的可以了解一下。
    2017-04-04
  • 超过百万的StackOverflow Flutter 20大问题(推荐)

    超过百万的StackOverflow Flutter 20大问题(推荐)

    这篇文章主要介绍了超过百万的StackOverflow Flutter 问题,有的问题在stackoverflow上有几十万的阅读量,说明很多人都遇到了这些问题,把这些问题整理分享给大家需要的朋友可以参考下
    2020-04-04
  • Android库项目中的资源ID冲突的解决方法

    Android库项目中的资源ID冲突的解决方法

    本篇文章主要介绍了Android库项目中的资源ID冲突的解决方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03

最新评论