web-dev-qa-db-fra.com

Android n'est pas modifiée lorsque la couleur d'arrière-plan est blanche

J'ai mis à niveau Android 6.0 et mon application ont un problème.

lorsque la couleur d'arrière-plan de la barre d'état n'est pas blanche, l'icône de notification est bonne. (l'icône de notification png est en blanc et alpha uniquement)

mais si certaines applications changent la couleur d'arrière-plan en blanc, mon icône de notification n'est pas inversée en noir.

Comment inverser l'icône de notification blanche en noir lorsque la couleur d'arrière-plan de la barre d'état est définie en blanc par une autre application? (Je ne dis pas comment utiliser l'icône de couleur.)

l'image ci-dessous montre un problème.

état normal

lorsque la couleur d'arrière-plan est changée en blanc, mon icône n'est pas changée en noir uniquement

  • Code de génération de notification

    Notification.Builder mBuilder =
            new Notification.Builder(context)
                    .setSmallIcon(R.drawable.ic_notifications_none)
                    .setPriority(priority2)
                    .setOngoing(true);
    
    mBuilder.setContent(generateMessageView(message));
    
    Intent notificationIntent = new Intent(context, MainActivity.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
                              | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    
    PendingIntent intent = PendingIntent.getActivity(context, 0,
            notificationIntent, 0);
    NotificationManager mNotificationManager =
            (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    mBuilder.setContentIntent(intent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
    
  • values-v23/styles.xml

    <style name="AppTheme" parent="Android:Theme.Material.NoActionBar">            
    </style>
    

** Trouvé une solution **

J'ai ajouté des icônes de notification au répertoire drawable non drawable- * dpi. Maintenant ça marche.

16
Jiyoung Kim

Il est tard pour répondre, mais pour ceux qui ont le même problème,

J'ai aussi eu ce problème et j'ai trouvé que le problème venait de l'icône graphique. Vous pouvez résoudre le problème en utilisant cet outil en ligne. Ouvrez ce lien:

https://romannurik.github.io/AndroidAssetStudio/icons-notification.html#source.type=image&source.space.trim=1&source.space.pad=0&name=ic_stat_call_white

choisissez votre image (de grande dimension), téléchargez la ressource et copiez-la dans votre projet.

et enfin définir l'icône de notification à l'aide de .setSmallIcon(R.drawable.ICON_NEW_NAME)

j'espère que cela t'aides

12
Nobody8

Je pense que le problème réside dans l'appareil Android 5.0 ou supérieur.

https://developer.Android.com/design/patterns/notifications.html
https://developer.Android.com/about/versions/Android-5.0-changes.html

Voici une solution:

Notification notification = new Notification.Builder(context)
        .setAutoCancel(true)
        .setContentTitle("My notification")
        .setContentText("Look, white in Lollipop, else color!")
        .setSmallIcon(getNotificationIcon())
        .build();

return notification;

et méthode getNotificationIcon():

private int getNotificationIcon() {
    boolean useWhiteIcon = (Android.os.Build.VERSION.SDK_INT >= Android.os.Build.VERSION_CODES.Lollipop);
    return useWhiteIcon ? R.drawable.icon_black : R.drawable.ic_nomarl;
}