有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在我的应用程序主题中使用windowTranslucentStatus

现在,还想将状态栏着色以匹配我的操作栏

目前我正在使用SystemBarTint库,除了一个问题外,它基本上是好的:

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

看起来是这样的(在应用程序发布期间,我花了5次时间拍摄了这个屏幕截图): No tinting

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

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

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

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

我知道我可以创建一个带有白色背景和状态栏应该显示的颜色的位图,但是它不能设置主题,这意味着如果主颜色改变,我必须创建一个新的位图

总而言之,我的问题是:您知道一种在XML中为状态栏(KitKat)设置着色颜色的方法吗

或者,是否可以创建一个XML可绘制文件,在顶部包含一个固定高度的彩色条


共 (2) 个答案

  1. # 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>
    
  2. # 2 楼答案

    正如我回答的here,您可以看到我创建的一个完整的工作示例here(不幸的是太长了,无法复制,但请放心,回购协议是行不通的!)

    哦,从棒棒糖开始,就不需要耍花招了;)