在pre牛轧糖设备上扩展通知大于256dp

时间:2017-11-03 14:59:50

标签: android notifications

我创建了一个Android通知,用作"小部件"并显示经典电视遥控器的一些按钮以控制电视。问题是这个通知在使用nougat和oreo的Android设备上正确显示,但在以前的版本上没有。

NotificationCompat.Builder mBuilder =
            new NotificationCompat.Builder(context, channel_id)
                    .setSmallIcon(R.drawable.ic_arrow_circle_line)
                    .setStyle(new android.support.v4.media.app.NotificationCompat.MediaStyle())
                    .setContent(contentView)
                    .setCustomBigContentView(contentView)
                    .setOngoing(false)
                    .setAutoCancel(true);  

有没有办法阻止通知在256dp上被裁剪?

The correct

The wrong

1 个答案:

答案 0 :(得分:0)

原因:对于5.0 Lollipop“通知图标必须全白”。

如果我们通过将目标SDK设置为20来解决白色图标问题,我们的应用程序将不会针对Android Lollipop,这意味着我们无法使用Lollipop特有的功能。 目标Sdk 21的解决方案

如果您想支持Lollipop材质图标,请为Lollipop及以上版本制作透明图标。请参阅以下内容:https://design.google.com/icons/

请查看http://developer.android.com/design/style/iconography.html,我们会看到白色样式是Android Lollipop中通知的显示方式。

在Lollipop中,Google还建议我们使用将在白色通知图标后面显示的颜色。请参阅链接:https://developer.android.com/about/versions/android-5.0-changes.html

我们想要添加颜色[https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setColor(int)][2]

的任何地方

以下Lollipop操作系统版本的Notification Builder实现将是:

Notification notification = new NotificationCompat.Builder(this);
if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    notification.setSmallIcon(R.drawable.icon_transperent);
    notification.setColor(getResources().getColor(R.color.notification_color););
} else { 
    notification.setSmallIcon(R.drawable.icon);
} 

注意:setColor仅在Lollipop中可用,它只影响图标的背景。

它将完全解决您的问题!!

  1. https://design.google.com/icons/
  2. https://developer.android.com/about/versions/android-5.0-changes.html
  3. https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html#setColor(int)
  4. https://design.google.com/icons/
  5. https://developer.android.com/reference/android/support/v4/app/NotificationCompat.Builder.html