Добавление действий к уведомлению в jellybean игнорирует пользовательский макет, установленный с setContent
Я создаю уведомление с пользовательским макетом, используя setContent, и он отлично работает. Но когда я добавляю действия к уведомлению с помощью addAction(), мой пользовательский макет игнорируется, и он показывает макет уведомления по умолчанию для Android.
Когда я сжимаю уведомление (используя жест двумя пальцами), показывается мой пользовательский макет, поэтому кажется, что "расширенная" форма использует другой макет, который я не могу установить.
Снимки экрана (с действиями, а затем, проведя двумя пальцами вверх, чтобы уменьшить его)
Как видите, он отображается пустым (= макет по умолчанию) при отображении действий.
Код:
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 ответ
Была точно такая же проблема! Вместо звонка
builder.setContent(remoteView)
Что заменяет обычный контент, вы должны сделать это так:
Notification statusNotification = builder.build();
statusNotification.bigContentView = remoteViews;
Который установит ваш макет в bigContentView, который становится видимым после расширения!
ПРИМЕЧАНИЕ. Это предотвратит появление кнопок действий. См. В Android (на JB), как добавить действие в настраиваемое расширенное уведомление? как обойти это