`
kevinffk
  • 浏览: 34537 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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>

 

目前为止,android6.0的市场占有率还很少,而MIUI和flyme在国内占有率还算可以,因此,我们可以尽自己所能,适配更多。如果你还有其他的奇淫技巧,也欢迎分享补充。

分享到:
评论

相关推荐

    Android 改变系统状态栏颜色和字体

    在Android 6.0(Marshmallow)及以上版本,可以通过`SYSTEM_UI_FLAG_LIGHT_STATUS_BAR`标志切换状态栏字体颜色,使其与背景颜色对比鲜明。例如: ```java if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES.M) { ...

    android修改状态栏背景颜色、字体颜色,隐藏状态栏,状态栏透明

    本教程将详细讲解如何修改状态栏的背景颜色、字体颜色,如何隐藏状态栏以及如何实现状态栏透明。 1. **修改状态栏背景颜色** 在Android 5.0(API Level 21)及以上版本,我们可以使用`setStatusBarColor()`方法来...

    Android自定义状态栏颜色与应用标题栏颜色一致

    在Android开发中,为了让应用的用户体验更加统一和美观,有时我们需要自定义状态栏的颜色,使其与应用的标题栏颜色保持一致。在iOS系统中,这种效果很常见,但早期的Android版本并不支持这一特性。不过,从Android ...

    Android实现修改状态栏背景、字体和图标颜色的方法

    Android实现修改状态栏字体颜色的方法有多种,例如可以通过MIUISetStatusBarLightMode和FlymeSetStatusBarLightMode来实现,也可以通过setSystemUiVisibility来实现。下面我们将详细介绍这三种方法。 1. ...

    android状态栏颜色主题设置(修改打包jar包出现的问题)

    如果希望改变状态栏字体颜色和图标颜色,可以使用`android:statusBarColor`和`android:navigationBarColor`属性。如果颜色较深,字体和图标会自动变为白色;颜色较浅,则变为黑色。 ```xml &lt;item name="...

    修改状态栏颜色

    在Android系统中,修改状态栏颜色是个性化应用界面的一个常见需求。状态栏是手机屏幕顶部显示网络连接、电量、时间等信息的区域。通常,它会保持与系统默认的主题颜色一致,但开发者可以通过自定义来改变这一特性,...

    安卓 修改状态栏背景颜色 字体 布局(你还为电量栏丑陋而烦恼吗,只需一行代码,解决)

    对于字体的修改,Android系统本身并不提供直接修改状态栏字体的API,但可以通过自定义系统字体的方式来间接实现。你需要创建一个自定义的字体库,并在应用中全局设置字体。首先,将字体文件放在assets/fonts目录下,...

    Android-自定义Android平台的状态栏

    状态栏一体化指的是让应用的界面与系统状态栏无缝融合,通常涉及到颜色、透明度以及在不同场景下的动态变化。在本教程中,我们将探讨如何实现这样的功能,特别是针对国产手机如魅族、小米等的兼容性问题。 首先,让...

    RK3568 Android11-动态控制状态栏、导航栏的显示和隐藏

    在Android系统中,状态栏和导航栏是用户界面的重要组成部分,它们提供了系统信息显示和应用程序间的导航功能。在某些应用场景下,比如全屏游戏或沉浸式视频观看时,开发者可能需要动态地控制这些元素的显示与隐藏,...

    android沉浸状态栏和顶部状态栏背景色的设置

    在Android 5.0及以上版本,我们可以直接使用`StatusBarColor`属性来修改状态栏颜色。在Activity的`onCreate()`方法中,可以通过以下代码实现: ```java if (Build.VERSION.SDK_INT &gt;= Build.VERSION_CODES....

    Android 组件 Axure 状态栏 标题栏

    状态栏的设计在Android中需要考虑到系统的统一性和可定制性。在Axure中,你可以找到预设的状态栏组件,这些组件通常会包含必要的元素如时间、网络图标和电量显示,并且可以自定义颜色和透明度,以匹配不同的Android...

    android透明状态栏

    本文将详细介绍如何实现Android的透明状态栏,以及如何处理与之相关的布局问题和状态栏字体颜色的修改。 首先,透明状态栏的基础设置通常涉及到修改`AndroidManifest.xml`中的主题设置。对于API 21及以上的版本,...

    安卓修改状态栏时间教程

    ### 安卓修改状态栏时间教程 在安卓系统中,状态栏显示了手机的基本信息,如信号强度、电池电量以及时间等。对于一些喜欢个性化设置的用户来说,修改状态栏的时间显示方式是一种常见的需求。本教程将详细介绍如何...

    完整版状态栏控件2.0.rar

    3. **图标和文字样式**:支持修改状态栏中的网络、电池、时间等图标样式,以及文字的字体、大小和颜色。 4. **动画效果**:提供过渡动画,如滑动、淡入淡出等,使状态栏的变化更加平滑。 5. **适配不同版本的...

    状态栏美化

    在iOS中,可以使用`UIStatusBarStyle`来设置不同颜色的状态栏,而在Android中,可以通过设置`android:statusBarColor`属性来改变颜色。 2. **透明度处理**:通过设置状态栏的透明度,可以使内容区域与状态栏之间...

Global site tag (gtag.js) - Google Analytics