1

我需要显示带有文本、图像和两个按钮的通知。我正在使用支持库中的 NotificationCompat 并且一切正常,直到我开始在不同的设备上对其进行测试。

这是 3 个不同设备上的相同通知:

3种不同设备的屏幕截图

这里有一些问题:

设备 1(Nexus 5、6.0):消息文本丢失,图像被裁剪。
设备 2(模拟器,7.0):图像被严重裁剪
设备 3(小米 mi5s,6.0):消息文本丢失,操作文本为黑色,几乎不可见

我能够重现的其他缺陷:白色背景上的白色动作图标;图像未显示(三星 Galaxy s8 plus,android 7.0);未显示操作按钮。

最后,两个最大的问题是:通知的某些部分不显示以及操作图标或操作文本与背景颜色几乎相同。

这是我显示通知的代码:

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    builder.setContentTitle("Test title");
    builder.setContentText("Test notification text description");
    builder.setAutoCancel(true);
    builder.setSmallIcon(R.drawable.ic_launcher);
    builder.setSound(Settings.System.DEFAULT_NOTIFICATION_URI);
    builder.setContentIntent(pendingIntentContent);

    NotificationCompat.Style style;
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && image != null) {
        style = new NotificationCompat.BigPictureStyle().bigPicture(image);
        builder.setStyle(style);
    }

    builder.addAction(R.drawable.ic_share_vector, "SHARE", pendingIntentShare);

    if(pendingIntentBookMark != null){
        builder.addAction(R.drawable.ic_bookmark, "SAVE", pendingIntentBookMark);
    }
    return builder.build();

我正在考虑使用我自己的布局,但我找不到一种方法来理解设备的主要颜色是什么。有些设备在黑色背景上使用白色通知,有些在黑色背景上使用黑色通知等等。如果通知使用不同的颜色,它将看起来很陌生。

我知道我可以将这个问题归咎于特定设备,但我仍然需要我的通知几乎可以在任何地方工作并且看起来或多或少一致(没有重大故障,例如不可见的文本或缺少元素)。

有没有办法设置操作按钮的背景和文本颜色,以便它们始终可见?

有没有办法知道设备的通知区域和通知背景使用哪些颜色?

我可以使用 BigPictureStyle 以外的其他东西吗?

我只是希望有人遇到同样的问题并找到任何解决方法。

4

0 回答 0