根据上下文更改Android小通知图标颜色

mik*_*sol 8 notifications android

几天来我一直在寻找堆栈溢出来找到这个问题的答案,但我无法弄清楚我的生活: - /

在我的带有Android O的Samsung S6上,像Gmail这样的应用程序会在状态栏中显示白色通知,但是当您拉下通知以单独检查时,会显示红色/蓝色/绿色/任何通知.例如,查看附带的照片 - 显示通知时为红色,通知栏中为白色.

什么类型的程序化Android魔法必须做到这一点?更具体地说,在Notification.Builder中,我需要设置哪些值才能以这种方式显示它?有两个不同的图标吗?是否有一个多层的drawable?如果是这样,如何选择在哪里显示哪些图层?谢谢!

美丽的红色为Gmail gmail的鲜明白色

Bug*_*pen 7

首先,我们应该使用 NotificationCompat.Builder

其次,这是获得该行为的代码

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context, "NOTIFICATION_CHANNEL_NAME")
            .setSmallIcon(R.drawable.notification_icon)
            .setContentTitle(title)
            .setContentText(message)
            .setColor(ContextCompat.getColor(context, R.color.your_color))
            .setContentIntent(pendingIntent);
Run Code Online (Sandbox Code Playgroud)

还有一件事,您正在使用的图标(R.drawable.notification_icon)应该是白色的,并且应该具有一点不透明性(应该只是一点透明性)。之后,您的顶部通知图标将为白色,当您绘制通知时,它将变为R.color.your_color