0

我想问一下是否可以通过编程方式使通知图标的颜色“响应”状态栏颜色。这意味着如果状态栏为白色(或其他浅色),则图标将显示为深色,如果为黑色(或其他深色),则图标将显示为白色。我还创建了图标的两种变体 - 白色的一种 (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());

非常感谢您的帮助 bilykralik16

4

2 回答 2

0

您可以为主题保存一个共享的偏好颜色值。将 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);
于 2019-10-29T11:36:30.123 回答
0

非常感谢大家,但我想我被误解了。我想到了状态栏中的图标颜色,但是当状态栏没有“打开”时。在我发布的图片上可以看到这种情况。当状态栏为深色时,白色图标可见。但是当状态栏有浅色时,当然看不到白色图标,我只想问是否可以根据状态栏颜色更改图标颜色(白色状态栏=黑色图标,黑色状态条 = 白色图标)。我想与其他图标(见图)颜色相同,如 Wi-Fi、时间等。

于 2019-10-29T19:12:04.810 回答