我想问问是否有可能以编程方式使通知图标的颜色“响应”状态栏颜色。这意味着,如果状态栏为白色(或其他浅色),则图标将显示为深色;如果状态栏为黑色(或某些其他深色),则图标将显示为白色。我还创建了图标的两种变体-白色(icon_white)和黑色(icon_black),到目前为止,我还可以创建带有白色图标的通知,但是当状态栏为白色时,将无法看到该图标。我的代码在下面:
White icon one light and black backgrounds
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());
非常感谢您的帮助bilykralik16
您可以为主题保存共享的首选项颜色值。将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);
非常感谢大家,但我想我被误会了。我考虑过状态栏中的图标颜色,但是状态栏不是“打开”时。这种情况在我发布的图片上可见。当状态栏为深色时,将显示白色图标。但是,当状态栏为浅色时,当然看不到白色图标,我只是想问问是否可以根据状态栏颜色更改该图标的颜色(白色状态栏=黑色图标,黑色状态bar =白色图标)。我希望与Wi-Fi,时间等其他图标(见图片)具有相同的颜色。😃