Android 10 通知颜色在深色主题更改时不会更改
Android 10 notification color doesn't change when dark theme changes
我有一些操作的通知。我使用 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
扩展而来。当设备中的深色主题为 enabled/disabled 时,整个应用程序会在主题之间正确切换。
当我创建通知时,它总是被正确创建,所以当深色主题打开时,使用 values-night
中的颜色,当它关闭时,使用 values
颜色。
问题是当主题改变并且通知已经可见时。我可以看到通知实际上发生了变化,因为背景从深色变为浅色,但操作的颜色没有变化。
我猜这是因为颜色不是通知主题的一部分,但我不确定如何处理,或者它是否是 Notification.Builder.
编辑:
此行为发生在模拟器上 运行 API 29. 当 运行 设备上的应用程序行为正确时,颜色会改变。我正在回答自己说要使用设备的问题。
此问题发生在模拟器上。在真实设备中,该问题不会发生,并且当深色主题更改时通知的颜色也会更改。
我有一些操作的通知。我使用 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
扩展而来。当设备中的深色主题为 enabled/disabled 时,整个应用程序会在主题之间正确切换。
当我创建通知时,它总是被正确创建,所以当深色主题打开时,使用 values-night
中的颜色,当它关闭时,使用 values
颜色。
问题是当主题改变并且通知已经可见时。我可以看到通知实际上发生了变化,因为背景从深色变为浅色,但操作的颜色没有变化。
我猜这是因为颜色不是通知主题的一部分,但我不确定如何处理,或者它是否是 Notification.Builder.
编辑: 此行为发生在模拟器上 运行 API 29. 当 运行 设备上的应用程序行为正确时,颜色会改变。我正在回答自己说要使用设备的问题。
此问题发生在模拟器上。在真实设备中,该问题不会发生,并且当深色主题更改时通知的颜色也会更改。