【问题标题】:Ice Cream Sandwich won't recognize line breaks in HTMLIce Cream Sandwich 无法识别 HTML 中的换行符
【发布时间】:2012-02-28 19:07:11
【问题描述】:

这与我之前问过的问题有关here. 调用replaceAll("\n", "<br />") 然后Html.fromHtml() 将正确格式化前冰淇淋三明治中的文本;但是,正如您从 photo 中看到的那样,它在 ICS 中不起作用。我已经尝试了至少 30 种不同的方法来捕获和替换文本中的换行符,但我空手而归。我有什么特别需要在 ICS 中调用的吗,这是一个错误,还有其他人遇到过这个问题吗?任何人都可以想到一个解决方法,因为必须有一个。另外,任何人都可以提供一些关于为什么会发生这种情况的见解吗?这是非常奇特的。

需要说明的是:我已经在 Froyo and Gingerbread 上进行了测试,并且文本格式正确。在冰淇淋三明治中,它没有。

这是从 Last.fm 返回的文本示例。滚动到底部,它从“内容”开始。 Bon Iver URL

如果您有兴趣亲身测试,这里有一个演示应用。 http://dl.dropbox.com/u/2301775/lastfm-api-test.zip

这里有两个屏幕截图说明了我的意思。它们来自测试应用程序。第一个运行的姜饼和第二个运行的冰淇淋三明治。

Gingerbread screenshot

Ice Cream Sandwich screenshot

【问题讨论】:

  • 您是否尝试转储出源文本以确认正在发生替换?
  • 奇怪,所以经过快速测试后,ICS 使用包含一堆换行符的快速示例文本工作得很好,然后使用replaceAll 将它们替换为
    元素并最终传递它使用Html.fromHtmlTextView。您使用的是什么 ICS 设备?
  • 有点,但不是。我用过模拟器和我的 Galaxy Nexus。使用 Last.fm api 演示,你就会明白我的意思了。

标签: java android html android-4.0-ice-cream-sandwich line-breaks


【解决方案1】:

(删除旧条目...测试测试项目)

有一个非常有趣的“问题”,但我不确定是谁负责。

我测试了您的应用并使其正常运行。 我正在查看 2.2 设备,其中第一个 \n 出现在字符串中(索引 413),然后我在 ICS 版本中查看了该索引。在那里我只能找到\r

您也可以在 LogCat 中看到不同之处。在 ICS 上,您会看到毫无意义的乱码,但在 ICS 下,您可以毫无问题地阅读完整的文本。

因此,不要将\n 替换为<br/>,您也应该替换\r。为了确保按以下顺序替换:

  1. \n\r
  2. \n
  3. \r

第 1 步对于消除这种可能性很重要,即如果有人使用 \n\r...

使用的工作代码:

String artistText = artistInfo.getWikiText();
Log.i("Log", artistText);
artistText = artistText.replaceAll("\n\r", "<br />");
artistText = artistText.replaceAll("\n", "<br />");
artistText = artistText.replaceAll("\r", "<br />");
System.out.println(artistText);
txtWiki.setText(Html.fromHtml(artistText));

【讨论】:

  • 我无法复制和粘贴我正在使用的文本,因为我下载了它,而且每个艺术家的内容都不同。所以,我不能手动将中断标签放在其中。我尝试过使用“\n\r”并替换之前的中断,然后再试一次,但没有任何改变。所以,我还是一头雾水。
  • 您能否添加从 API 获得的示例文本?
  • 你可以看看实际返回的文本from the URL.它在最底部。它从“内容”开始。
  • 那么,您在 Ice Cream Sandwich 上测试了 replaceAll("\n\r\n\r", "&lt;br/&gt;") 并且有效?
  • 不,我使用了replaceAll("\n", "&lt;br/&gt;") 并在下一行使用了replaceAll("\r", "&lt;br/&gt;"),它成功了。我一开始也会使用replaceAll("\n\r", "&lt;br/&gt;")
猜你喜欢
  • 1970-01-01
  • 2012-01-28
  • 2012-04-01
  • 2012-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多