无法更改NotificationCompat MediaStyle文本颜色

时间:2017-04-10 11:01:44

标签: android android-mediaplayer

我正在构建基于Google's Universal Media Player的媒体播放器应用。现在我面临玩家创建通知的问题。

创建通知的代码:

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);

此代码发出以下通知: enter image description here

之后,我从代码中删除 .setColor(mNotificationColor)部分。我认为这会使通知的背景变白。但现在背景变为灰色,如下所示: enter image description here

所以现在我想将背景颜色设置为白色,这很容易。 setColor可以完成这项工作,但当时我希望文字颜色为黑色。无法弄清楚如何更改文字颜色。即使我提供黑色图标,播放/暂停的图标也不会改变。

enter image description here

1 个答案:

答案 0 :(得分:0)

尝试一下这样的自定义通知:

使用通知并使用内置方法设置文本时,以下行会创建布局:

  RemoteViews contentView = new RemoteViews(context.getPackageName(),
            com.android.internal.R.layout.status_bar_latest_event_content);

上述布局包含以下View,负责查看通知文本:

<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>

这里有一些参考。 希望这能解决您的问题。

Link1

Link2