Android 无法更改NotificationCompat MediaStyle文本颜色
我正在构建一个基于的媒体播放器应用程序。现在我面临着玩家创建通知的问题 创建通知的代码:Android 无法更改NotificationCompat MediaStyle文本颜色,android,android-mediaplayer,Android,Android Mediaplayer,我正在构建一个基于的媒体播放器应用程序。现在我面临着玩家创建通知的问题 创建通知的代码: NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(mService); notificationBuilder .setStyle(new NotificationCompat.MediaStyle() .setShowActionsInCo
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(mService);
notificationBuilder
.setStyle(new NotificationCompat.MediaStyle()
.setShowActionsInCompactView(
new int[]{playPauseButtonPosition}) // show only play/pause in compact view
.setMediaSession(mSessionToken))
.setColor(mNotificationColor)
.setSmallIcon(R.drawable.ic_notification)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setUsesChronometer(true)
.setContentIntent(createContentIntent(description))
.setContentTitle(description.getTitle())
.setContentText(description.getSubtitle())
.setLargeIcon(art);
此代码发出以下通知:
之后,我从代码中删除.setColor(mNotificationColor)部分。我认为这会使通知的背景变成白色。但现在背景变成灰色,如下所示:
所以现在我想把背景色设置为白色,这是很简单的部分setColor
可以完成这项工作,但当时我希望文本颜色为黑色。无法确定如何更改文本颜色。即使我提供黑色图标,播放/暂停图标也不会更改
尝试以下自定义通知:
<style name="TextAppearance.StatusBar.EventContent">
<item name="android:textColor">#000000</item>
</style>
使用通知并使用内置方式设置文本时,以下行将创建布局:
RemoteViews contentView = new RemoteViews(context.getPackageName(),
com.android.internal.R.layout.status_bar_latest_event_content);
上述布局包含以下视图,该视图负责查看通知文本:
<TextView android:id="@+id/text"
android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:paddingLeft="4dp" />
因此,结论是所需的样式是TextAppearance.StatusBar.EventContent,其定义如下:
<style name="TextAppearance.StatusBar.EventContent">
<item name="android:textColor">#000000</item>
</style>
#000000
这里有一些参考文献。
希望这能解决你的问题
尝试以下自定义通知:
<style name="TextAppearance.StatusBar.EventContent">
<item name="android:textColor">#000000</item>
</style>
使用通知并使用内置方式设置文本时,以下行将创建布局:
RemoteViews contentView = new RemoteViews(context.getPackageName(),
com.android.internal.R.layout.status_bar_latest_event_content);
上述布局包含以下视图,该视图负责查看通知文本:
<TextView android:id="@+id/text"
android:textAppearance="@style/TextAppearance.StatusBar.EventContent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:singleLine="true"
android:ellipsize="marquee"
android:fadingEdge="horizontal"
android:paddingLeft="4dp" />
因此,结论是所需的样式是TextAppearance.StatusBar.EventContent,其定义如下:
<style name="TextAppearance.StatusBar.EventContent">
<item name="android:textColor">#000000</item>
</style>
#000000
这里有一些参考文献。
希望这能解决你的问题
我添加了
@color/app\u primary\u text
,因为这是我在中找到的样式名称。但什么也没发生。文本颜色仍然为白色。使用工具的原因:override=“true”是:overriding@style/textpearance\u AppCompat\u Notification\u Title\u Media在com.android中标记为private。支持:AppCompat-v7。如果有意,请使用工具:override=“true”,否则请选择其他名称。私人资源不应被引用;它们可能不会无处不在,即使在它们所在的地方,它们也可能会在没有通知的情况下消失。要解决此问题,请将资源复制到您自己的项目中。当我在不使用覆盖的情况下使用时会出现此问题。您的最小sdk是什么,您测试了哪个设备。请尝试以下操作:contentView.setTextColor(R.id.text2,statColor);Min SDK版本是17,我在运行Android 6.0.1I的Nexus 5上测试,添加@color/app_primary_text
,因为这是我在。但什么也没发生。文本颜色仍然为白色。使用工具的原因:override=“true”是:overriding@style/textpearance\u AppCompat\u Notification\u Title\u Media在com.android中标记为private。支持:AppCompat-v7。如果有意,请使用工具:override=“true”,否则请选择其他名称。私人资源不应被引用;它们可能不会无处不在,即使在它们所在的地方,它们也可能会在没有通知的情况下消失。要解决此问题,请将资源复制到您自己的项目中。当我在不使用覆盖的情况下使用时会出现此问题。您的最小sdk是什么,您测试了哪个设备。请尝试以下操作:contentView.setTextColor(R.id.text2,statColor);MinSDK版本是17,我在运行安卓6.0.1的Nexus5上测试