2

我有一些操作的通知。我使用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都声明了,并且有不同的颜色。该应用程序的基本主题也从. 当在设备中启用/禁用深色主题时,整个应用程序在主题之间正确更改。valuesvalues-nightTheme.MaterialComponents.DayNight

当我创建通知时,它总是正确创建,所以当深色主题打开时,使用颜色values-night,当它关闭时使用values颜色。

问题是当主题发生变化并且通知已经可见时。我可以看到通知实际上正在发生变化,因为背景从暗变为亮,但动作的颜色没有改变。

我猜这是因为颜色不是通知主题的一部分,但我不确定如何处理,或者它是否是Notification.Builder中的错误。

编辑:此行为发生在运行 API 29 的模拟器上。在设备上运行应用程序时,行为是正确的,颜色会发生变化。我正在回答自己说要使用设备的问题。

4

1 回答 1

-2

这个问题发生在模拟器上。在真实设备中,该问题不会发生,并且当深色主题发生变化时通知的颜色也会发生变化。

于 2019-10-03T06:46:36.277 回答