Обычно базовое уведомление включает заголовок, строку текста и действия, которые пользователь может выполнить в ответ. Для предоставления более подробной информации можно создавать большие, расширяемые уведомления, используя один из нескольких шаблонов уведомлений, описанных в этом документе.
Для начала создайте уведомление со всем основным содержимым, как описано в разделе «Создание уведомления» . Затем вызовите setStyle() с объектом стиля и укажите информацию, соответствующую каждому шаблону, как показано в следующих примерах.
Добавить большое изображение
Чтобы добавить изображение в уведомление, передайте экземпляр NotificationCompat.BigPictureStyle в setStyle() .
var notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(com.example.compose.snippets.R.drawable.ic_logo) .setContentTitle("Title") .setContentText("Content text") .setStyle( NotificationCompat.BigPictureStyle() .bigPicture(bitmapImage) ) .build()
Чтобы изображение отображалось в виде миниатюры только в свернутом состоянии уведомления, как показано на следующем рисунке, вызовите setLargeIcon() и передайте ему изображение. Затем вызовите BigPictureStyle.bigLargeIcon() и передайте ему null , чтобы большая иконка исчезла при разворачивании уведомления:
notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle("Title") .setContentText("Content text") .setLargeIcon(Icon.createWithResource(context, R.drawable.dog)) .setStyle( NotificationCompat.BigPictureStyle() .bigPicture(bitmapImage) .bigLargeIcon(null as Bitmap?) ) .build()

NotificationCompat.BigPictureStyle .Добавьте большой блок текста
Примените NotificationCompat.BigTextStyle для отображения текста в развернутой области содержимого уведомления:
notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setContentTitle("Sender name") .setContentText("Email subject") .setLargeIcon(Icon.createWithResource(context, R.drawable.dog)) .setStyle( NotificationCompat.BigTextStyle() .bigText(someVeryLongMessage) ) .build()

NotificationCompat.BigTextStyle .Создайте уведомление в стиле "Входящие".
Примените NotificationCompat.InboxStyle к уведомлению, если хотите добавить несколько коротких строк с кратким содержанием, например, фрагменты входящих писем. Это позволит добавить несколько фрагментов текста, каждый из которых будет обрезан до одной строки, вместо одной сплошной строки текста, предоставляемой NotificationCompat.BigTextStyle .
Чтобы добавить новую строку, вызовите функцию addLine() до шести раз, как показано в следующем примере. Если вы добавите более шести строк, будут видны только первые шесть.
notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.mail) .setContentTitle("5 New mails from Frank") .setContentText("Check them out") .setLargeIcon(bitmapImage) .setStyle( NotificationCompat.InboxStyle() .addLine("Re: Planning") .addLine("Delivery on its way") .addLine("Follow-up") ) .build()
В результате получается следующее изображение:

Отобразить диалог в уведомлении
Примените NotificationCompat.MessagingStyle для отображения последовательных сообщений от любого количества отправителей. Это идеально подходит для мессенджеров, поскольку обеспечивает единообразный макет для каждого сообщения, обрабатывая имя отправителя и текст сообщения отдельно, и каждое сообщение может состоять из нескольких строк.
Чтобы добавить новое сообщение, вызовите addMessage() , передав текст сообщения, время получения и имя отправителя. Вы также можете передать эту информацию в виде объекта NotificationCompat.MessagingStyle.Message , как показано в следующем примере:
val message1 = NotificationCompat.MessagingStyle.Message( messages[0].text, messages[0].time, messages[0].sender ) val message2 = NotificationCompat.MessagingStyle.Message( messages[1].text, messages[1].time, messages[1].sender ) notification = NotificationCompat.Builder(context, CHANNEL_ID) .setSmallIcon(R.drawable.ic_logo) .setStyle( NotificationCompat.MessagingStyle(Person.Builder().setName("Me").build()) .addMessage(message1) .addMessage(message2) ) .build()

NotificationCompat.MessagingStyle . При использовании NotificationCompat.MessagingStyle любые значения, переданные в методы setContentTitle() и setContentText() игнорируются.
Вы можете вызвать setConversationTitle() , чтобы добавить заголовок, который будет отображаться над беседой. Это может быть созданное пользователем название группы или, если у группы нет конкретного названия, список участников беседы. Не следует устанавливать заголовок для чатов один на один, поскольку система использует наличие этого поля как подсказку о том, что беседа является групповой.
Этот стиль применяется только на устройствах под управлением Android 7.0 (уровень API 24) и более поздних версий. При использовании библиотеки совместимости ( NotificationCompat ), как было показано ранее, уведомления с MessagingStyle автоматически переключаются на поддерживаемый расширенный стиль уведомлений.
При создании подобного уведомления для чата добавьте действие прямого ответа .
Создайте уведомление с элементами управления воспроизведением мультимедиа.
Примените MediaStyleNotificationHelper.MediaStyle для отображения элементов управления воспроизведением мультимедиа и информации о треке.
Укажите связанный с вами MediaSession в конструкторе. Это позволит Android отображать правильную информацию о ваших медиафайлах.
Вызовите addAction() до пяти раз, чтобы отобразить до пяти кнопок с иконками. Вызовите setLargeIcon() , чтобы установить обложку альбома.
В отличие от других стилей уведомлений, MediaStyle также позволяет изменять размер содержимого в свернутом виде, указывая три кнопки действий, которые также отображаются в свернутом виде. Для этого укажите индексы кнопок действий в setShowActionsInCompactView() .
В следующем примере показано, как создать уведомление с элементами управления мультимедиа:
notification = NotificationCompat.Builder(context, CHANNEL_ID) // Show controls on lock screen even when user hides sensitive content. .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) .setSmallIcon(com.example.compose.snippets.R.drawable.play) // Add media control buttons that invoke intents in your media service .addAction(R.drawable.previous, "Previous", null /* Add valid intent */) // #0 .addAction(R.drawable.pause, "Pause", null /* Add valid intent */) // #1 .addAction(R.drawable.next, "Next", null /* Add valid intent */) // #2 // Apply the media style template. .setStyle(MediaStyleNotificationHelper.MediaStyle(mediaSession) .setShowActionsInCompactView(1 /* #1: pause button */)) .setContentTitle("Wonderful music") .setContentText("My Awesome Band") .setLargeIcon(bitmapImage) .build()

MediaStyleNotificationHelper.MediaStyle .Дополнительные ресурсы
Для получения дополнительной информации о MediaStyle и расширяемых уведомлениях см. следующие ссылки.