android在通知中嵌入换行符

mia*_*le2 7 notifications android

我需要在通知中嵌入换行符.我有两行不同的数据,我需要嵌入换行符来区分两者.我反驳了一个反斜杠,但这不起作用.

有没有办法做到这一点?

w3b*_*ark 8

您不需要使用 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()
Run Code Online (Sandbox Code Playgroud)

关于它的工作原理的注意事项:

  1. 标题可以没有格式(即不要尝试在此处使用 HTML)
  2. 正文可以有任意多的格式,但我们必须注意,当通知折叠时不​​会显示换行符。所有其他 HTML 格式在折叠/展开状态下都能正常工作。您可以根据需要使用粗体、斜体等(我认为)

如果您不想在推送通知中发送 HTML 格式,则另一种选择是使用某种降​​价格式,并在使用SpannableStringBuilder构建通知之前手动处理此问题


koo*_*ng3 4

据我所知,除了创建自定义Notification布局之外,没有其他方法可以做到这一点。该Notification文档提供了执行此操作的分步过程,并且非常全面。这是该链接。

TextView根据需要创建这两行仅意味着在布局 XML 中添加额外内容。然后,您只需将每个TextView的文本设置为两行数据,如示例所示。