如何在android中的通知中放置展开图标

时间:2017-10-07 18:07:36

标签: android

我正在尝试在我的开发应用中添加扩展图标。我已完成通知RemortView折叠并展开布局帮助this site。投手下方是我当前的通知状态。

enter image description here

我的代码如下:

NotificationCompat.Builder builder = new NotificationCompat.Builder(mContext);
        builder.setContentIntent(intent);
        builder.setTicker(mContext.getResources().getString(R.string.custom_notification));
        builder.setSmallIcon(R.drawable.ic_notification_small_basket);
        builder.setAutoCancel(true);
        builder.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
        builder.setCustomBigContentView(expandedView);
        builder.setCustomContentView(contentView);

        NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(NOTIFICATION_SERVICE);
        notificationManager.notify(0, builder.build());

实际需要如何放置展开图标以及如何通过通知RemortView 获取点击事件,以便展开和折叠通知。

看起来像下面的投手。 这个投手只是扩展图标的一个例子。

enter image description here 请帮助我。

2 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但是出于堆栈溢出的性质,我会给您一个正确的答案。

您可能希望使用Android的默认标头装饰自定义通知,而不是实现自己的标头(包括用于扩展/折叠通知的箭头)。

您唯一需要注意的是按照正确的顺序使用builder方法。首先,您必须为折叠和展开的RemoteView(称为RemortViews)设置远程视图,然后将NotificationCompat.DecoratedCustomViewStyle包裹起来。

notificationBuilder.setCustomContentView(contentView)
    .setCustomBigContentView(expandedView)
    .setStyle(NotificationCompat.DecoratedCustomViewStyle()) // <- That's what you want
val notification = notificationBuilder.build()

不要忘记删除自定义标头内容,因为它不再有意义。

Click here for the documentation

答案 1 :(得分:0)

现在好了我们有代码我试过这个并且它对我有用,你需要对存储的位置和内容做一些调整

NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context)
            .setSmallIcon(R.mipmap.ic_launcher)
            .setLargeIcon(BitmapFactory.decodeResource(context.getResources(),
                    R.mipmap.ic_launcher))
            .setContentTitle(title)
            .setContentText(message)
            .setAutoCancel(true)
            .setSound(defaultSoundUri)
            .setContentIntent(pendingIntent);

    android.app.NotificationManager notificationManager =
            (android.app.NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

    notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());