如何在Lollipop中获取自定义通知的默认通知背景颜色?

18
我在Lollipop中自定义通知背景的颜色出现了问题,应该是白色的地方变成了黑色。textColor没问题:

我正在使用

<resources>
    <style name="NotificationText" parent="android:TextAppearance.StatusBar.EventContent" />
    <style name="NotificationTitle" parent="android:TextAppearance.StatusBar.EventContent.Title" />
</resources>

有什么方法可以使用设备默认主题颜色来自定义通知吗?


有没有解决方案? - madlymad
5个回答

7

您的应用程序的targetSdkVersion必须为21。
根据Ahmed的回答,在values-21文件夹中添加另一个样式文件。

<?xml version="1.0" encoding="UTF-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
   <style name="NotificationText" parent="android:TextAppearance.Material.Notification" />
   <style name="NotificationTitle" parent="android:TextAppearance.Material.Notification.Title" />
   <style name="NotificationTime" parent="android:TextAppearance.Material.Notification.Time" />
</resources>    

5

出于某种原因,Lollipop中有新的样式。将此放入values-v21/styles.xml中:

<resources>
    <style name="NotificationTitle" parent="android:TextAppearance.Material.Notification.Title"></style>
    <style name="NotificationText" parent="android:TextAppearance.Material.Notification"></style>
</resources>

这对我似乎不起作用。我的通知背景是浅灰色,而默认是白色。 - velis

0

要解决这个问题,你有两个选择:

1)针对SDK 21进行目标设置,自定义通知将自动使用白色背景

2)将现有的布局复制到layout-v21文件夹中,并在其根元素中添加android:background="#FFFFFFFF",如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"
    android:background="#FFFFFFFF" >

...

</LinearLayout>

对我来说非常好用。


这对我不起作用,因为如果你使用锁定(lock),小部件会有不同的颜色,因此如果所有小部件都是灰色,而这一个是白色,它看起来就不好看。 - Michal

0
创建文件夹values-v21/styles.xml并粘贴以下代码:
 <style name="NotificationTitle" parent="@android:style/TextAppearance.StatusBar.EventContent.Title">
    <item name="android:textColor">@android:color/black</item>
    <item name="android:textStyle">normal</item></style>

-1

我不确定背景主题是什么,但我在xml中将自定义布局(小视图和大视图)的背景设置为深色。这样可以更好地匹配Lollipop之前的通知。

我觉得很奇怪android:TextAppearance.StatusBar.EventContent.Title的外观在Lollipop上没有调整为深色,而标准通知颜色却是白色!


2
我不想设置随机颜色。我希望颜色与当前主题相匹配。颜色主题在Lollipop之前并不一定是暗色的。它可能因制造商而异。在原生Lollipop上,默认情况下为白色。因此,我正在寻找一种检索此“官方颜色”的方法。 - user1026605

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接