NotificationCompat 4.1 SetSmallIcon和SetLargeIcon(N

2019-07-05 01:47发布

我用这个简单的代码来设置一个通知中的Android 4.1或更高版本。 它运作良好,但我的问题带有SmallIcon和LargeIcon。 据我所知,SmallIcon在状态栏中显示和LargeIcon在下拉列表中显示。

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());

我的问题是:

  1. 当通知启动时,裁剪过大的小图标显示旁边的“北京时间”的文字,而不是显示无尺寸过它的原始SmallIcon。

  2. 在下拉列表中我看到左边的LargeIcon,这是很好的。 但我也看到右侧的小图标,旁边的通知的时间。 我不想证明。

Answer 1:

  1. 在我的应用程序提供大(128×128像素)PNG绘制小图标,它显示了规模化,无需裁剪。 是位图文件或可能作为XML资源定义你的绘制? 在XML中,你可以指定显示(如裁剪)的几个方面。 仔细检查您的XML或只使用PNG / JPG。

  2. 由于Android的上Notification.setSmallIcon API文档()中明确规定:

    设置小图标资源,这将被用来代表在状态栏中的通知。 用于扩展视图的平台模板将在左得出这样的图标,除非大图标也被指定, 在这种情况下,小图标将被移动到右侧

AFAIK有没有办法可以重写的行为,除非你提供自己的通知模板(通过Notification.setContent()



Answer 2:

周围有这种怪异的实施方式。 而不是使用的setLargeIcon使用这样的:

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


Answer 3:

我猜想,这是预期的行为。

你应该检查你的小图标遵循的图标大小的UX指南。 小图标是有限的,以24x24dp。

扩展的通知的默认行为是同时显示大图标和小图标。 我不知道这有摆脱小图标的方式,但为什么这很重要?



Answer 4:

就我而言,我只是把我的红色图标,大图标和对的setColor和Color.WHITE设置白色图标,我的小图标。 这样,在通知区域,我的红色图标显示和白色的图标“disapeared”。

Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.app_logo);

mBuilder.setContentIntent(resultPendingIntent).setColor(Color.WHITE).setLargeIcon(icon);


Answer 5:

在我来说,我没有放置图标图像中的所有文件夹(xhdpi,华电国际,MDPI,LDPI)。



文章来源: NotificationCompat 4.1 SetSmallIcon and SetLargeIcon