`
xuanzhui
  • 浏览: 201482 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

修改状态栏字体的主题颜色

阅读更多

以下代码需要在 API >= 23 即 最低版本Android 6.0 (M) ,才可以生效

 

public static void setStatusBarTheme(final Activity activity, final boolean needDarkFont) {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        // fetch the current flags
        final int lFlags = activity.getWindow().getDecorView().getSystemUiVisibility();

        // SYSTEM_UI_FLAG_LIGHT_STATUS_BAR requests the status bar to draw in a mode
        // that is compatible with light status bar backgrounds

        // For this to take effect, the window must request FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
        // but not FLAG_TRANSLUCENT_STATUS
        activity.getWindow().getDecorView().setSystemUiVisibility(
                needDarkFont ?
                (lFlags | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) :
                (lFlags & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR));
    }
}

 

SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 告诉系统,当前的UI色彩偏淡,需要深色的字体来匹配;即设置该标志时,状态栏的字体会使用黑色;取反之后,系统会设置状态栏的字体为白色。

 

注意,根据API文档说明,要想该flag生效,需要同时设置 FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS, 而且取消设置 FLAG_TRANSLUCENT_STATUS, 对应的代码为

Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);

 

 

refer Android Lollipop Set Status Bar Text Color

 

 

 

 

 

 

分享到:
评论

相关推荐

    QT状态栏修改

    不过,在QT中,直接改变状态栏文字颜色并不直观,因为`QStatusBar`没有直接提供修改字体颜色的接口。一种常见的解决办法是通过创建自定义的`QLabel`作为状态栏的部件来实现: ```cpp QLabel *label = new QLabel(...

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

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

    修改状态栏颜色

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

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

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

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

    总结来说,要实现在Android上让状态栏颜色与应用标题栏颜色一致,可以通过XML主题或者在代码中动态设置。代码实现方式更为灵活,适用于各种Android版本,且可以确保状态栏颜色与应用界面的其他部分协调一致,提升...

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

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

    CListCtrl 标题栏颜色字体修改

    下面将详细介绍如何实现`CListCtrl`标题栏颜色和字体的修改。 1. **自定义绘制(Custom Draw)机制** `CListCtrl`提供了自定义绘制功能,允许开发者在特定阶段介入控件的绘制过程。要修改标题栏的颜色和字体,你...

    iphone 完美状态栏

    然而,一些开发者通过越狱手段开发了插件,允许用户自定义状态栏的样式,比如改变字体、颜色、图标等,以达到“完美状态”的效果。 3. **越狱环境**:要实现这种自定义,用户必须先对iPhone进行越狱。越狱是解除...

    delphi中改变statusbar的背景色和字体颜色

    在Delphi编程环境中,StatusBar是窗口底部...请注意,为了确保颜色的正确显示,可能需要处理各种屏幕主题和系统设置的变化。在实际项目中,你可能还需要考虑颜色的适应性,确保在深色和浅色背景下都能有良好的可读性。

    Android 组件 Axure 状态栏 标题栏

    在Axure中,你可以找到预设的状态栏组件,这些组件通常会包含必要的元素如时间、网络图标和电量显示,并且可以自定义颜色和透明度,以匹配不同的Android版本和主题。在实际设计时,你需要确保状态栏的高度符合...

    状态栏美化

    1. **颜色定制**:状态栏的颜色可以根据应用的主题色进行调整,使其与背景或内容更好地融合。在iOS中,可以使用`UIStatusBarStyle`来设置不同颜色的状态栏,而在Android中,可以通过设置`android:statusBarColor`...

    完整版状态栏控件2.0.rar

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

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

    3. **黑色字体**:对于支持暗色主题的设备,我们可能希望在透明状态下保持状态栏文字为黑色。可以使用`android:statusBarColor`属性,将其值设为特定颜色,如`@android:color/transparent`,同时使用`android:...

    android透明状态栏

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

    状态栏优化演示代码

    在Android中,可以通过修改Activity的主题或者使用StatusBarManager服务来改变状态栏的背景色。通过自定义主题,可以在`styles.xml`文件中设定`<item name="android:statusBarColor">@color/colorPrimaryDark</item>...

    statusView内容侵入状态栏(非常好用)

    1. **修改主题**:在AndroidManifest.xml中,为需要侵入状态栏的Activity设置一个透明或半透明的状态栏主题。 2. **调整布局**:在布局XML文件中,为根布局设置一个合适的paddingTop值,这个值等于状态栏的高度,...

    ActionBarSherlock 状态栏 源码

    5. **主题和样式**:在`values/styles.xml`文件中,定义了一系列与Action Bar相关的样式,如`Theme.Sherlock`、`Theme.Sherlock.Light`等,开发者可以通过修改这些主题,调整Action Bar的颜色、字体等视觉效果。...

    idea 控制台log日志颜色修改

    "idea 控制台log日志颜色修改"这个主题,正是关于如何通过GrepConsole插件在IDEA中自定义控制台日志的颜色,以便更直观地识别和分析不同类型的日志信息。 GrepConsole是一款非常实用的IDEA插件,它允许用户根据日志...

    类似于状态栏的自定义控件的实现

    在Android中,我们通常通过修改主题(Theme)或使用系统提供的API来改变状态栏的颜色和透明度。 在实现自定义状态栏控件时,我们首先要创建一个新的View类,继承自Android的基础视图组件,如LinearLayout或...

    MFC CStatusBar颜色完美解决

    3. **确保颜色与系统主题同步**:如果你希望在用户更改系统主题时保持状态栏颜色的一致性,你需要在主题变化时重新绘制状态栏。这可以通过处理`WM_THEMECHANGED`消息来实现。 ```cpp afx_msg void OnThemeChanged...

Global site tag (gtag.js) - Google Analytics