【问题标题】:How to use both BigTextStyle and BigPictureStyle in setStyle Notification?如何在 setStyle 通知中同时使用 BigTextStyle 和 BigPictureStyle?
【发布时间】:2015-05-20 11:05:06
【问题描述】:

我试图在我的通知中同时使用 BigTextStyle 和 BigPictureStyle。但是 setStyle 只接受一种样式。

我的代码:

NotificationCompat.BigTextStyle bigTextStyle = new NotificationCompat.BigTextStyle();
mBuilder.setVisibility(1);
mBuilder.setSmallIcon(R.drawable.app_icon1);
mBuilder.setContentTitle(title.toString());
bigTextStyle.bigText(description.toString());
//mBuilder.setSubText(bigText.toString());
if (bigImage != null && !bigImage.toString().equals("")) {
    mBuilder.setStyle(new NotificationCompat.BigPictureStyle().bigPicture(ImageUtil.getBitmapFromUrl(bigImage.toString())));
}
mBuilder.setStyle(bigTextStyle);
mBuilder.setPriority(Notification.PRIORITY_MAX);
mBuilder.setContentIntent(contentIntent);

如何同时使用?我想与图像一起显示文本(带换行符)!

【问题讨论】:

  • 关于这个话题的任何更新??使用 BigPictureStyle 和 BigTextStyle ...
  • 是的,很简单。创建您自己的通知布局!您可以设计您的 xml 并将其添加到通知中。更多详情:developer.android.com/guide/topics/ui/notifiers/…

标签: android push-notification


【解决方案1】:

抱歉回复晚了..实际上我也遇到了同样的问题并得到了解决方案,所以我认为它可以帮助其他用户。

因为我们不能同时使用NotificationCompat.BuilderBigTextStyleBigPictureStyle 方法,所以我们可以创建CustomView

我们可以使用NotificationCompat.BuildersetCustomBigContentView(RemoteViews) 方法并创建自己的视图来显示带有大文本的大图像。

请检查以下代码:-

PendingIntent pendingIntent = PendingIntent.getActivity(this, (int) System.currentTimeMillis(), i,
                PendingIntent.FLAG_ONE_SHOT);

        Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);


        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this);
        notificationBuilder.setContentTitle("YOUR_APP_NAME");
        notificationBuilder.setContentText(body);
        notificationBuilder.setTicker("YOUR_APP_NAME");
        notificationBuilder.setAutoCancel(true);
        notificationBuilder.setSound(defaultSoundUri);
        notificationBuilder.setCustomBigContentView(remoteView("YOUR_MESSAGE_TO_SHOW"));///IT IS THE MAIN METHOD WHICH WE USE TO INFLATE OR CREATE THE CUSTOM VIEW
        notificationBuilder.setSmallIcon(getNotificationIcon(notificationBuilder));
        notificationBuilder.setContentIntent(pendingIntent);

        NotificationManager notificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        notificationManager.notify((int) System.currentTimeMillis(), notificationBuilder.build());

下面是我们从 setCustomBigContentView() 方法调用的 RemoteViews

 private RemoteViews remoteView(String message)
    {
        RemoteViews views;
        views = new RemoteViews(getPackageName(), R.layout.YOUR_LAYOUT_HERE);
        views.setImageViewBitmap(R.id.YOUR_BIG_IMAGE_ID_FROM_LAYOUT, bitmap);
        views.setImageViewBitmap(R.id.YOUR_APP_ID_FROM_LAYOUT, BitmapFactory.decodeResource(getResources(), R.drawable.APP_ICON_OF_YOUR_APP));
        views.setTextViewText(R.id.YOUR_BIG_TEXTVIEW_ID_FROM_LAYOUT, message);
        return views;
    }

我已经创建了像 it 这样的自定义通知

【讨论】:

  • 这是一个很好的解决方案。如何从服务类中的 Resource 获取布局文件?
  • 我刚才用RemoteViews解释过了
猜你喜欢
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 2016-12-23
  • 1970-01-01
  • 2022-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多