android在通知中嵌入换行符

时间:2012-02-22 01:16:08

标签: android notifications

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

有办法做到这一点吗?

3 个答案:

答案 0 :(得分:4)

据我所知,除了创建自定义Notification布局之外,别无法做到这一点。 Notification文档有一个分步过程,并且非常彻底。 Here is the link to that.

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

答案 1 :(得分:1)

尽管其他人在这里说了什么,您也不需要使用RemoteViews或自定义布局来显示多行! 多行文字是可能的,但是只有在扩展通知时才可以。

为此,您可以使用NotificationCompat.BigTextStyle。而且,如果您阅读开发指南here,则会注意到他们提到了这个提示:

  

提示:要在文本中添加格式(粗体,斜体,换行符等),您可以add styling with HTML markup

因此,换句话说:

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()

有关其工作原理的注意事项:

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

如果您不想在推送通知中发送HTML格式,那么另一种选择是使用某种降​​价格式,并在使用SpannableStringBuilder

建立通知之前手动进行处理

答案 2 :(得分:0)

您需要在应用中制作自定义通知构建器。更多详细信息:https://developer.android.com/guide/topics/ui/notifiers/notifications.html#CustomExpandedView,我花了很长时间才找到让firebase在所有情况下调用onMessageReceived的方法。

  1. app in foreground
  2. app in background
  3. app被杀了。
  4. 基本上你通过api向firebase发送的消息必须在你的firebase服务器的json请求中没有“通知”键,并且只使用“数据”键,如下所示,firebase服务将在上面列出的所有情况下调用onMessageReceived。

    {
      "to": "/topics/your_topic",
       "data": {
           "key1":"data_key1",
           "title":"",
           "line1":"data1",
           "line2":"data2"
       }
    }