我想问一下是否可以以编程方式使通知图标的颜色"响应"状态栏颜色。这意味着如果状态栏是白色(或其他一些浅色),那么图标将显示为深色,如果它是黑色(或其他深色),则图标将显示为白色。我还创建了图标的两个变体 - 白色 (icon_white) 和黑色 (icon_black),到目前为止,我还可以使用白色图标创建通知,但是当状态栏为白色时,看不到图标。我的代码如下:
白色图标一光和黑色背景
Intent intent = new
Intent(MainActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(MainActivity.this, 0, intent, 0);
android.support.v4.app.NotificationCompat.Builder builder = new android.support.v4.app.NotificationCompat.Builder(MainActivity.this, "id 1")
.setSmallIcon(R.drawable.icon_white)
.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION))
.setContentTitle("Notification title")
.setContentText("Notification text")
.setPriority(android.support.v4.app.NotificationCompat.PRIORITY_DEFAULT)
.setContentIntent(pendingIntent)
.setAutoCancel(true);
android.support.v4.app.NotificationManagerCompat notificationManager = android.support.v4.app.NotificationManagerCompat.from(MainActivity.this);
notificationManager.notify(1, builder.build());
非常感谢您的帮助 比利克拉利克16
您可以保存主题的共享首选项颜色值。 将 setColor 值与保存的颜色一起使用。
.setColor(ContextCompat.getColor(getApplicationContext(), color.color_default))
return new Notification.Builder(getApplicationContext(), ANDROID_CHANNEL_ID)
.setContentTitle(title)
.setContentText(body)
.setSmallIcon(getNotificationIcon())
.setContentIntent(pendingIntent)
.setColor(ContextCompat.getColor(getApplicationContext(), R.color.color_default))
.setVisibility(Notification.VISIBILITY_PUBLIC) //to show content on lock screen
.setPriority(Notification.PRIORITY_MAX)
.setAutoCancel(true);
非常感谢大家,但我想我被误解😅了.我想到了状态栏中的图标颜色,但是当状态栏没有"打开"时。这种情况在我发布的图片上可见。当状态栏为深色时,白色图标可见。但是当状态栏是浅色时,当然看不到白色图标,我只是想问是否可以根据状态栏颜色更改该图标颜色(白色状态栏 = 黑色图标,黑色状态栏 = 白色图标)。我想与其他图标(见图片)相同的颜色,如Wi-Fi,时间等。 😃