Пользовательские расширяемые уведомления в Jelly Bean (4.1)

В Jelly Bean добавлена ​​поддержка расширяемых уведомлений о состоянии. Согласно http://developer.android.com/about/versions/jelly-bean.html:

В дополнение к шаблонным стилям вы можете создавать свои собственные стили уведомлений, используя любой удаленный вид.

Как это сделать? Я считаю, что для этого вам нужно создать собственный Notification.Style. Это абстрактный класс, поэтому его нужно расширить. Мне не удалось найти документацию о том, какие части необходимо расширить.

Этот SO-вопрос дает хороший пример того, как использовать notificaiton.builder для основные уведомления, я использую это как отправную точку. Добавление

.setContent(new RemoteViews(getPackageName(), R.layout.notification)) 

добавляет настраиваемый вид для основных уведомлений, но его нельзя расширить.


person RobB    schedule 12.09.2012    source источник


Ответы (2)


Вам нужно создать свой собственный RemoteViews, а затем указать, что вы хотите, чтобы расширенный контент наследовал ваш пользовательский RemoteViews.

 RemoteViews expandedView = new RemoteViews(YOUR CONTEXT.getPackageName(), YOUR CUSTOM LAYOUT);
 Notification notification = mBuilder.build();
 notification.bigContentView = expandedView;

Обратите внимание, что bigContentView — это то, что вам нужно. mBuilder — это объект Notification.Builder.

person adneal    schedule 12.09.2012

Есть хорошее руководство здесь о том, как это сделать, а также о том, как создать свой собственный макет.

введите здесь описание изображения

В основном вам нужно создать remoteView с вашим макетом, а затем установить его как bigContentView в объекте уведомления. Кстати, убедитесь, что вы также добавили reguler contentView, потому что в некоторых случаях ОС будет использовать меньший contentView.

person Jimmy    schedule 14.09.2012
comment
ссылка обновлена ​​еще раз feras.us/blog/custom-rich-notification-view -андроид - person Kirill Kulakov; 28.10.2013
comment
ссылка снова не работает - person Langusten Gustel; 25.12.2016
comment
@LangustenGustel снова обновлен с прямой ссылкой на страницы github. - person Jimmy; 27.12.2016