web-dev-qa-db-fra.com

Pourquoi les icônes définies avec Notification.Builder.setSmallIcon dans Android Lollipop s’affichent-elles sous la forme d’un carré blanc?)

J'ai ce code:

Notification notif;

// Build notification
Notification.Builder notifBuilder = new Notification.Builder(context);
notifBuilder.setContentIntent(pendingIntent);
notifBuilder.setContentTitle(title);
notifBuilder.setSmallIcon(icon_resId);
notifBuilder.setContentText(ne.getCaption());
notifBuilder.setDefaults(Notification.DEFAULT_ALL);
notifBuilder.setAutoCancel(autocancel);
notifBuilder.setWhen(System.currentTimeMillis());
notif = notifBuilder.build();

et fonctionne bien dans Android 4.4.

Cependant, dans Android 5.0, l’icône affichée dans la barre d’état est un carré blanc. L’icône affichée dans le nouveau "corps de notification", qui apparaît lorsque le périphérique est verrouillé, est correcte.

Dans http://developer.Android.com/reference/Android/app/Notification.Builder.html , je ne vois rien de nouveau concernant les icônes de notification dans l'API niveau 21.

61
Borja

J'ai résolu de changer la taille de l'icône en 16x16 px et en n'utilisant que la couleur blanche

29
Borja

Regardez la documentation: http://developer.Android.com/design/style/iconography.html

il y a des mots: "Les icônes de notification doivent être entièrement blanches. De plus, le système peut réduire et/ou assombrir les icônes."

31
porlicus

Dupliquer: l’icône de la barre de notification devient blanche en Android 5 Lollipop

En bref:

Mise à jour Android 5: https://developer.Android.com/about/versions/Android-5.0-changes.html Notifications -> Style de design des matériaux

Mettez à jour ou supprimez les éléments impliquant la couleur. Le système ignore tous les canaux non alpha dans les icônes d'action et dans l'icône de notification principale. Vous devez supposer que ces icônes seront uniquement alpha. Le système trace les icônes de notification en blanc et les icônes d'action en gris foncé.

Il est possible de définir la couleur de fond de la petite icône à l’aide de (gris par défaut):

Notification.Builder#setColor(int)
4
Tobliug

Comme indiqué dans Android 5.0 Changements de comportement du Android site des développeurs sous Notifications:

Les notifications sont dessinées avec du texte sombre au-dessus d'un arrière-plan blanc (ou très clair) pour correspondre aux nouveaux widgets de conception de matériau. Assurez-vous que toutes vos notifications ont l’air exact avec le nouveau jeu de couleurs. Si vos notifications semblent fausses, corrigez-les:

Utilisez setColor () pour définir une couleur d'accent dans un cercle derrière l'image de votre icône. Mettez à jour ou supprimez les éléments impliquant la couleur. Le système ignore tous les canaux non alpha dans les icônes d'action et dans l'icône de notification principale. Vous devez supposer que ces icônes seront uniquement alpha. Le système trace les icônes de notification en blanc et les icônes d'action en gris foncé.

http://developer.Android.com/about/versions/Android-5.0-changes.html .

4
CoDeSigns

Ajoutez ceci dans votre manifeste -

 <meta-data Android:name="com.google.firebase.messaging.default_notification_icon"
    Android:resource="@drawable/ic_notification" />
2
Anirban

Dans Android 5.0, l’icône affichée dans la barre d’état est un carré blanc en raison de 5,0 Lollipop "Les icônes de notification doivent être entièrement blanches" .

Vous pouvez facilement trouver ces types d'icônes sur l'icône Matériau. Visite: https://material.io/icons/

Google suggère également d'utiliser une couleur personnalisée qui sera affichée derrière l'icône de notification blanche à l'aide de la méthode setColor().

Pour plus d'informations, visitez: https://developer.Android.com/about/versions/Android-5.0-changes.html

0
Aashish

Si vous regardez toujours cela, le moyen le plus simple d’afficher correctement votre icône est d’abord de le rendre avec le Android Icon Studio ici:

https://romannurik.github.io/AndroidAssetStudio/icons-notification.html

Décompressez les fichiers du fichier Zip téléchargé dans votre dossier projet/principal afin de les insérer dans les dossiers drawable-xxxx appropriés.

Ensuite, pour changer de couleur dans la notification, utilisez quelque chose comme ceci:

NotificationCompat.Builder builder = new NotificationCompat.Builder(context, CHANNEL_ID)
    .setSmallIcon(R.drawable.ic_notification_appicon) // <-- Icon from Android Icon Studio 
    .setColor(context.getColor(R.color.holo_blue))    // <-- Set your preferred icon colour to appear in the notification dropdown list
    .setContentTitle("Title")
    .setContentText("Content")
    .setAutoCancel(true)
    .setCategory(NotificationCompat.CATEGORY_EVENT)
    .setDefaults(Notification.DEFAULT_ALL)
    .setPriority(NotificationCompat.PRIORITY_DEFAULT);
0
James Semaj