NotificationCompat 4.1 SetSmallIcon and SetLargeIcon

I used this simple code to set a Notification in Android 4.1 or higher.
It works well, but my problem comes with SmallIcon and LargeIcon.
I understand that SmallIcon is shown in the status bar and the LargeIcon is shown in the dropdown list.

NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
builder.setTicker("The ticker");
builder.setContentTitle("The title");
builder.setContentText("The text");
builder.setSmallIcon(R.drawable.my_small_icon);
Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.my_96px_large_icon);
builder.setLargeIcon(bm);       
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
nm.notify("direct_tag", NOTIF_ALERTA_ID, builder.build());

My problem is:

  • Android PagerAdapter not calling instantiateItem
  • Query to get records based on Radius in SQLite?
  • Background ListView becomes black when scrolling
  • Android - problems using FragmentActivity + Loader to update FragmentStatePagerAdapter
  • AndroidHttpClient Nullpointerexception calling android.net.http.AndroidHttpClient.isMmsRequest
  • Breakpoints not getting hit in Android Studio
    1. When the notification is launched, a cropped oversized Small Icon is shown next to “The Ticker” text, instead of showing the original SmallIcon without oversizing it.
      enter image description here

    2. In the dropdown list I see the LargeIcon on the left, that’s good. But I also see the small icon on the right, next to the time of the notification. I don’t want to show that.
      enter image description here

    Related posts:

    genymotion version and virtual device version do not match
    Android test raw resource
    Send JSON as a POST request to server by AsyncHttpClient
    Visual Studio 2015 hangs when create/open a Cordova project
    onGlobalLayout differentiate between various invocations
    How to port native c code on android
  • ViewPager not working if set layout_height = wrap_content
  • Creating a new Icon Set in Android Studio?
  • Best practices for pubnub on android
  • Delete all rows from a table, throws nullpointer
  • Is there a way to animate on a Home Widget?
  • Incoming call dynamically override default ringtone
  • 5 Solutions collect form web for “NotificationCompat 4.1 SetSmallIcon and SetLargeIcon”

    1. In my application I provide large (128×128 px) PNG drawable as small icon, and it shows scaled and without cropping. Is your drawable defined in bitmap file or maybe as XML resource? In XML you can specify several aspects of display (e.g. cropping). Double check your XML or use just PNG/JPG.

    2. As Android API documentation on Notification.setSmallIcon() clearly states:

      Set the small icon resource, which will be used to represent the notification in the status bar. The platform template for the expanded view will draw this icon in the left, unless a large icon has also been specified, in which case the small icon will be moved to the right-hand side.

    AFAIK there’s no way you can override the behaviour, unless you provide your own notification template (via Notification.setContent()

    There is a way around this weird implementation. Instead of using setLargeIcon use this:

    Notification notification=notificationBuilder.build()
    notification.contentView.setImageViewResource(android.R.id.icon, R.drawable.your_large_icon);
    

    I’d guess that this is the expected behavior.

    You should check to see that your small icon follows the UX guidelines for icon size. Small icons are limited to 24x24dp.

    The default behavior of an expanded notification is to show both the large icon and the small icon. I’m not sure that there’s a way to get rid of the small icon, but why is this important?

    In my case, I just set my red icon as the large icon and the setColor to Color.WHITE and set a white icon as my small icon. That way, in the notifications area, my red icon is shown and the white icon is “disapeared”.

    Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.app_logo);
    
    mBuilder.setContentIntent(resultPendingIntent).setColor(Color.WHITE).setLargeIcon(icon);
    

    In my case I had not placed icon image in all folders (xhdpi,hdpi,mdpi,ldpi).

    Android Babe is a Google Android Fan, All about Android Phones, Android Wear, Android Dev and Android Games Apps and so on.