我收到一些操作通知。然后,我使用Notification.Builder为操作和图标着色设置颜色。这是创建通知的完整代码。
val notification = Notification.Builder(context,
CHANNEL_ID)
.setContentTitle(title)
.setContentText(mainText)
.setSmallIcon(R.drawable.small_icon)
.setContentIntent(pendingIntent)
.addAction(Notification.Action.Builder(
Icon.createWithResource(
this, R.drawable.action_icon),
getString(R.string.action_title),
actionPendingIntent)
.build())
.setStyle(Notification.InboxStyle()
.addLine(mainText)
.addLine(subText)
.addLine(secondSubText)
.setBigContentTitle(title)
.setSummaryText(summaryText))
.setColor(getColor(R.color.notification_accent))
.build()
R.color.notification_accent
和values
中都声明了颜色values-night
,并且具有不同的颜色。该应用程序的基本主题也从Theme.MaterialComponents.DayNight
扩展而来。而且,在设备中启用/禁用深色主题时,整个应用程序会在主题之间正确切换。
当我创建通知时,始终会正确创建它,因此,当启用深色主题时,将使用values-night
中的颜色,而当其关闭时,将使用values
颜色。
问题是当主题更改并且通知已经可见时。我可以看到通知实际上是在变化,因为背景从黑暗变为明亮,但是操作的颜色没有变化。
我猜测是因为颜色不是通知主题的一部分,但我不确定该如何处理,或者它是Notification.Builder中的错误。
编辑: 在运行API 29的仿真器上会发生此行为。在设备上运行应用程序时,行为正确,颜色会更改。我正在回答自己说要使用设备的问题。
答案 0 :(得分:0)
此问题发生在模拟器上。在真实设备中,不会发生此问题,并且当深色主题更改时,通知的颜色也会更改。