向jellybean中的通知添加操作会忽略使用setContent设置的自定义布局

时间:2012-10-13 17:18:49

标签: android android-notifications android-4.2-jelly-bean

我正在使用setContent创建一个带有自定义布局的通知,它工作正常。 但是当我使用addAction()向通知添加动作时,我的自定义布局被忽略,它显示了android的默认通知布局。

当我缩小通知(使用双指手势)时,我的自定义布局显示,因此“展开”表单似乎使用了我无法设置的不同布局。

屏幕截图(使用操作,然后向上滑动两根手指以缩小它)

Expanded with actions

After shrinking it back

如您所见,当显示操作时,它显示为空(=默认布局)。

代码:

RemoteViews remoteView = new RemoteViews(context.getPackageName(), R.layout.notification_status);
Builder builder = new Notification.Builder(context);
builder.setSmallIcon(icon)
    .setTicker(tickerText)
    .setWhen(when)
    .setContent(remoteView)
    .setOngoing(true)
    .setContentIntent(contentIntent)
    .setPriority(Notification.PRIORITY_HIGH)
    .addAction(R.drawable.ic_remove, "Action 1", cancelPendingIntent)
    .addAction(R.drawable.ic_stat_notify_gray_official, "Action 2", cancelPendingIntent)
    .setContentIntent(contentIntent);
Notification statusNotification = builder.build();
return statusNotification;

我试图找到控制通知行动布局的地方,没有运气。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

有完全相同的问题!而不是打电话

builder.setContent(remoteView)

这取代了正常的内容,你应该这样做:

Notification statusNotification = builder.build();
statusNotification.bigContentView = remoteViews;

将布局设置为bigContentView,扩展后会显示!

注意:这样做会阻止您的操作按钮显示。有关如何解决此问题,请参阅In Android (on JB), how can I add an action to a custom rich notification?