状态栏图标颜色不会随主题而改变
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
希望对你有帮助。
【讨论】:
以上是关于状态栏图标颜色不会随主题而改变的主要内容,如果未能解决你的问题,请参考以下文章