状态栏图标颜色不会随主题而改变

Posted

技术标签:

【中文标题】状态栏图标颜色不会随主题而改变【英文标题】:Status Bar Icon color does not change with Theme 【发布时间】:2019-01-31 03:17:12 【问题描述】:

在通知中,我使用可绘制的 xml 作为 setSmallIcon。当状态栏背景变为白色时,我的白色图标消失(实际上背景颜色和图标变为相同颜色)。 但是,如果我将图像图标用作 setSmallIcon,则状态栏图标的颜色将变为灰色。

当状态栏为白色时:

状态栏非白色时:

代码:

builder.setSmallIcon(R.drawable.my_list,level); 

可绘制文件的一部分:

<item android:maxLevel="86">
    <layer-list>
        <item
            android:bottom="@dimen/bottom_margin"
            android:drawable="@drawable/ic_8"
            android:left="@dimen/ic_2_1_left"
            android:right="@dimen/ic_2_1_right"
            android:top="@dimen/upper_margin" />
        <item
            android:bottom="@dimen/bottom_margin"
            android:drawable="@drawable/ic_6"
            android:left="@dimen/ic_2_2_left"
            android:right="@dimen/ic_2_2_right"
            android:top="@dimen/upper_margin" />
    </layer-list>
</item>
<item android:maxLevel="87">
    <layer-list>
        <item
            android:bottom="@dimen/bottom_margin"
            android:drawable="@drawable/ic_8"
            android:left="@dimen/ic_2_1_left"
            android:right="@dimen/ic_2_1_right"
            android:top="@dimen/upper_margin" />
        <item
            android:bottom="@dimen/bottom_margin"
            android:drawable="@drawable/ic_7"
            android:left="@dimen/ic_2_2_left"
            android:right="@dimen/ic_2_2_right"
            android:top="@dimen/upper_margin" />
    </layer-list>
</item>
<item android:maxLevel="88">
    <layer-list>
        <item
            android:bottom="@dimen/bottom_margin"
            android:drawable="@drawable/ic_8"
            android:left="@dimen/ic_2_1_left"
            android:right="@dimen/ic_2_1_right"
            android:top="@dimen/upper_margin" />
        <item
            android:bottom="@dimen/bottom_margin"
            android:drawable="@drawable/ic_8"
            android:left="@dimen/ic_2_2_left"
            android:right="@dimen/ic_2_2_right"
            android:top="@dimen/upper_margin" />
    </layer-list>
</item>

如何更改带有状态栏背景(白色)的 xml 可绘制图标颜色?

对不起,我的英语不好。

【问题讨论】:

【参考方案1】:

在你的活动中的 super.OnCreate() 之前......

添加以下代码行..

setTheme(R.style.AppTheme);

【讨论】:

不工作。它是随时从后台发出的通知和触发。【参考方案2】:

试试这个:

在 Activity 中设置可绘制对象后:

getWindow().setStatusBarColor(Color.parseColor(your_color_in_hex));

看看它是否有效并请更新。

【讨论】:

好的,你能发布你的drawable吗 不工作。 java.lang.NullPointerException:尝试在 com.example.myapp.service.DataService.onCreate(DataService.java:121) 的空对象引用上调用虚拟方法 'android.view.Window android.app.Activity.getWindow()' )。其实我想改变状态栏图标颜色只有状态栏背景变成白色 drawable 是一个长文件。我加了一部分。【参考方案3】:

从 Android 5.0 开始,指南说:

通知图标必须是白色的。

即使不是,系统也只会考虑图标的 Alpha 通道,将其渲染为白色。

一些有用的链接:-

Android statusbar icons color

Notification bar icon turns white in Android 5 Lollipop

希望对你有帮助。

【讨论】:

以上是关于状态栏图标颜色不会随主题而改变的主要内容,如果未能解决你的问题,请参考以下文章

状态栏中图标的颜色 (Flutter)

如何根据设置的主题更改颤动中的状态栏图标和文本颜色?

Android设置状态栏颜色和状态栏文字、图标颜色

沉浸式导航栏及状态栏系统图标颜色的改变

如何使状态栏变为白色并带有黑色图标?

如何根据主题更改状态栏/导航栏颜色/亮度?