我用这个简单的代码来设置一个通知中的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());
我的问题是:
当通知启动时,裁剪过大的小图标显示旁边的“北京时间”的文字,而不是显示无尺寸过它的原始SmallIcon。
在下拉列表中我看到左边的LargeIcon,这是很好的。 但我也看到右侧的小图标,旁边的通知的时间。 我不想证明。
在我的应用程序提供大(128×128像素)PNG绘制小图标,它显示了规模化,无需裁剪。 是位图文件或可能作为XML资源定义你的绘制? 在XML中,你可以指定显示(如裁剪)的几个方面。 仔细检查您的XML或只使用PNG / JPG。
由于Android的上Notification.setSmallIcon API文档()中明确规定:
设置小图标资源,这将被用来代表在状态栏中的通知。 用于扩展视图的平台模板将在左得出这样的图标,除非大图标也被指定, 在这种情况下,小图标将被移动到右侧 。
AFAIK有没有办法可以重写的行为,除非你提供自己的通知模板(通过Notification.setContent()
周围有这种怪异的实施方式。 而不是使用的setLargeIcon
使用这样的:
Notification notification=notificationBuilder.build()
notification.contentView.setImageViewResource(android.R.id.icon, R.drawable.your_large_icon);
我猜想,这是预期的行为。
你应该检查你的小图标遵循的图标大小的UX指南。 小图标是有限的,以24x24dp。
扩展的通知的默认行为是同时显示大图标和小图标。 我不知道这有摆脱小图标的方式,但为什么这很重要?
就我而言,我只是把我的红色图标,大图标和对的setColor和Color.WHITE设置白色图标,我的小图标。 这样,在通知区域,我的红色图标显示和白色的图标“disapeared”。
Bitmap icon = BitmapFactory.decodeResource(getResources(),R.drawable.app_logo);
mBuilder.setContentIntent(resultPendingIntent).setColor(Color.WHITE).setLargeIcon(icon);
在我来说,我没有放置图标图像中的所有文件夹(xhdpi,华电国际,MDPI,LDPI)。