【发布时间】:2012-03-06 18:06:17
【问题描述】:
我正在尝试将 html 放入 TextView。一切正常,这是我的代码。
String htmlTxt = "<p>Hellllo</p>"; // the html is form an API
Spanned html = Html.fromHtml(htmlTxt);
myTextView.setText(html);
这会将我的 TextView 设置为正确的 html。但我的问题是,有一个
html 中的标记,进入 TextView 的结果文本末尾有一个“\n”,因此它将我的 TextView 的高度推高了。
由于它是一个 Spanned 变量,我无法应用正则表达式替换来删除“\n”,如果我要将其转换为字符串,然后应用正则表达式,我将失去让 html 锚点正常工作的功能.
有谁知道从“Spanned”变量中删除结束换行符的任何解决方案?
【问题讨论】:
-
你能用实际的 HTML 换行符 (
<br/>) 代替吗?您可以在文本之前放置换行符,之后什么都没有,所以它是:
Helllllllllooooo ,这将在文本上方给它一个换行符,但在它下面没有任何内容。 -
@Ben,html 返回来自 API,我无法控制它。
-
也许使用TextUtils.getTrimmedLength() 会起作用。 TextUtils 中还有很多其他功能可以帮助您解决问题...
-
我今天一直在和这个作斗争。当我自己写的时候,下面的答案很好用。问题是当 标签不仅出现在末尾,而且出现在文本的其他地方时。唯一的方法是转换为字符串并执行 .replace(...) 但随后您会丢失所有格式。
-
也检查一下,非常简单的方法和工作;)stackoverflow.com/a/24553061/2626219
标签: android html line-breaks spanned