Вам не нужно использовать RemoteViews или пользовательский макет для отображения нескольких строк, несмотря на то, что здесь говорили другие!
Многострочные тексты возможны, но только при расширении уведомления.
Для этого вы можете использовать NotificationCompat.BigTextStyle . И если вы прочитаете руководства разработчика здесь , то заметите, что они упоминают этот совет:
Совет. Чтобы добавить форматирование в текст (полужирный, курсив, разрывы строк и т. Д.), Вы можете добавить стили с разметкой HTML .
Итак, другими словами:
val title = "My Title"
val body = "Line 1<br>Line 2<br><i>Italic Line 3</i>"
val formattedBody = SpannableString(
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) Html.fromHtml(body)
else Html.fromHtml(body, Html.FROM_HTML_MODE_LEGACY)
)
NotificationCompat.Builder(context, channelId)
.setColor(ContextCompat.getColor(context, R.color.colorPrimary))
.setContentTitle(title)
.setContentText(formattedBody)
.setStyle(NotificationCompat.BigTextStyle().bigText(formattedBody).setBigContentTitle(title))
.setSmallIcon(R.drawable.ic_small_notification_icon)
.build()
Что нужно знать о том, как это работает:
- Заголовок может иметь форматирование no (т.е. не пытайтесь использовать HTML здесь)
- Тело может иметь столько форматирования, сколько мы хотим, но мы должны отметить, что разрывы строк не будут отображаться, когда уведомление свернуто. Все остальные форматы HTML отлично работают как в свернутом, так и в развернутом состоянии. Вы можете выделять жирным шрифтом, курсивом и т. Д. Столько, сколько хотите (я думаю)
Если вы не хотите отправлять форматирование HTML в своем push-уведомлении, тогда другой вариант - использовать какое-либо форматирование уценки и вручную обработать его перед созданием уведомления с помощью SpannableStringBuilder