我需要在通知中嵌入换行符。我有两行不同的数据,我需要嵌入换行符来区分这两行。
我修改了反斜杠-n,但这不起作用。
有没有办法做到这一点?
尽管其他人在这里说过,您不需要使用 RemoteViews 或自定义布局来显示多行!
多行文本是可能的,但仅限于展开通知时。
为此,您可以使用通知兼容.BigTextStyle https://developer.android.com/reference/android/support/v4/app/NotificationCompat.BigTextStyle.html。如果你阅读了开发指南here https://developer.android.com/training/notify-user/expanded然后你会注意到他们提到了这个提示:
提示:要在文本中添加格式(粗体、斜体、换行符等),您可以使用 HTML 标记添加样式 https://developer.android.com/guide/topics/resources/string-resource.html#StylingWithHTML.
所以,换句话说:
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 格式,那么另一种选择是使用某种 Markdown 格式,并在构建通知之前手动处理此问题SpanableStringBuilder https://developer.android.com/reference/android/text/SpannableStringBuilder
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)