NotificationCompat 4.1 SetSmallIcon和SetLargeIcon

Ton*_*Ton 36 notifications icons android

我使用这个简单的代码在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());
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 启动通知后,"The Ticker"文本旁边会显示一个裁剪的超大小图标,而不是显示原始SmallIcon而不会过大. 在此输入图像描述

  2. 在下拉列表中,我看到左边的LargeIcon,这很好.但是我也会在通知时间旁边看到右边的小图标.我不想表明这一点. 在此输入图像描述

Jer*_*yna 29

  1. 在我的应用程序中,我提供大(128x128像素)PNG drawable作为小图标,它显示缩放和没有裁剪.您的drawable是在位图文件中定义还是作为XML资源定义的?在XML中,您可以指定显示的几个方面(例如裁剪).仔细检查您的XML或仅使用PNG/JPG.

  2. 由于Notification.setSmallIcon()上的Android API文档明确指出:

    设置小图标资源,该资源将用于表示状态栏中的通知.展开视图的平台模板将在左侧绘制此图标,除非还指定了大图标,在这种情况下,小图标将移动到右侧.

除非您提供自己的通知模板(通过Notification.setContent(),否则AFAIK无法覆盖行为


Thu*_*der 15

围绕这个奇怪的实现有一种方法.而不是setLargeIcon使用这个:

Notification notification=notificationBuilder.build()
notification.contentView.setImageViewResource(android.R.id.icon, R.drawable.your_large_icon);
Run Code Online (Sandbox Code Playgroud)


Joe*_*lin 9

我猜这是预期的行为.

您应该检查您的小图标是否符合图标大小的UX准则.小图标限制为24x24dp.

展开通知的默认行为是显示大图标和小图标.我不确定是否有办法摆脱小图标,但为什么这很重要?