Html.fromHtml失去格式

时间:2014-05-02 16:52:13

标签: android android-sqlite

所以我在这里抓到了一点点。我想格式化部分setText而不是其他格式。

我目前有:

workoutInfo.setText(Html.fromHtml("<b>Workout Details: </b><br />") + articleData[6]);

看起来像: 锻炼细节:(注意没有粗体)

测试

测试

测试

这不会格式化任何文本(但会在articleData [6]

中保留回车容器

如果我将fromHtml更改为包含articleData:

workoutInfo.setText(Html.fromHtml(("<b>Workout Details: </b><br />") + articleData[6]));

看起来像: 锻炼明细:

测试测试测试(通知没有回车)

它正确地格式化了第一部分中的html,但是articleData(从数据库导入)丢失了它的回车。

任何人都能看到我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

  

任何人都能看到我在这里做错了什么?

在第一种情况下,当您使用toString()将其Html.fromHtml()连接时,通过隐式调用articleData的结果来删除HTML格式。

在第二种情况下,如果articleData确实包含换行符,那么这些换行符将作为普通HTML呈现的一部分转换为普通空格。

在第一种情况下,

Try using TextUtils.concat()而不是+,因为它应该保留使用Html.fromHtml()创建的范围。

答案 1 :(得分:0)

Html.fromHtml()会返回Spanned个实例。但是,连接String会将其转换为String。您可以通过调试器轻松检查这一点,并且您将看到编译器添加了StringBuilder来连接它们。这就是为什么格式在第一种选择中丢失的原因。

所以第二种选择应该是要使用的选择。要保留换行符,只需将其替换为brs。

String textWithLines = "one\r\ntwo\r\nthree";
edit.setText(Html.fromHtml("<b>Workout Details: </b><br />" + textWithLines.replace("\r\n", "<br>")));