如何在布局/样式 XML 中设置状态栏色调颜色?

Posted

技术标签:

【中文标题】如何在布局/样式 XML 中设置状态栏色调颜色?【英文标题】:How to set status bar tint color in layout/style XML? 【发布时间】:2014-12-11 16:56:24 【问题描述】:

我在我的应用主题中使用windowTranslucentStatus

现在,还想为状态栏着色以匹配我的 ActionBar。

目前我正在使用SystemBarTint 库,除了一个问题之外,它大部分都很好:

当应用程序启动时,操作系统会在实际充气过程中将主题模型布局显示为初始图像。在那个阶段,还没有状态栏着色。

看起来是这样的(在应用启动期间我花了 5 次来截取此屏幕截图):

只有在 Activity 完全加载后才会应用色调。这对我来说是个问题,我正在寻找一种在发布期间以某种方式在状态栏上显示完整品牌的方法。

我已阅读 This blog post,其中解释了如何通过指定 windowBackground 来实际控制启动期间显示的内容。

我将windowBackground 设置为我的主色-> 然后整个屏幕涂成粉红色。

我将我的活动根元素上的background 属性设置为白色,但在启动过程中屏幕又是粉红色的,只有在活动加载后,内容的背景才会清除为白色。这还可以,但并不理想。

我知道我可以创建一个带有白色背景和颜色的位图,状态栏应该是,但是它不能主题化,这意味着如果主颜色发生变化,我将不得不创建一个新的位图.

所以总结一下我的问题是:你知道在 XML 中为状态栏(在 KitKat 中)设置色调颜色的方法吗?

或者,是否可以创建一个 XML 可绘制对象,在顶部包含一个具有固定高度的彩色条?

【问题讨论】:

看到这个***.com/questions/19746943/… @SyedRazaMehdi 天哪……那个问题的最后一个答案正是我想要的! 我已经编辑了状态栏和操作栏的答案,希望对您有所帮助 【参考方案1】:

这里是: The (almost) perfect answer

很高兴知道其他人和我一样在为同样的问题而苦苦挣扎。

为简单起见,我将在此处发布 XML 可绘制对象:

window_background.xml:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@+id/status_bar_background"
          android:drawable="@color/main_app_color"/>

    <item android:id="@+id/content_window_background"
        android:drawable="@color/white"
        android:top="25dp"/>
</layer-list>

现在在我的主题中,我将此可绘制对象指定为windowBackground

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="BaseAppTheme">
        <!-- Customize your theme here. -->
        <item name="android:windowTranslucentNavigation">@bool/translucent_nav_bar</item>
        <item name="android:windowTranslucentStatus">true</item>
        <item name="android:windowBackground">@drawable/window_background</item>
    </style>
</resources>

【讨论】:

您是否意识到您不接受 my answer 链接到您正在链接的完全相同的资源(也来自我)? :D @Takhion 不,您的答案是在我的之后发布的。我没有立即接受自己的答案的唯一原因是因为 SO 强制执行 24 小时限制。【参考方案2】:

正如我已回复 here,您可以看到我创建的完整工作示例 here(不幸的是,复制时间太长,但请放心,repo 无处可去!)。

哦,从 Lollipop 开始,就不需要任何技巧了;)

【讨论】:

以上是关于如何在布局/样式 XML 中设置状态栏色调颜色?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 iOS 7 中设置导航栏的色调颜色

在 Appdelegate 中设置后如何更改导航栏的色调?

在 Android 操作栏中设置 SearchView 的样式

在自定义导航栏中设置条形按钮项目颜色

更改状态栏色调颜色

如何在 UIProgressView 中设置进度色调颜色