2014-05-02 81 views
0

所以我在这里有点抓住22。我想格式化我的setText的一部分,而不是其他。Html.fromHtml格式丢失

我目前有:

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(从db导入)失去了回车。

有人看到我在这里做错了吗?

回答

3

有人看到我在这里做错了吗?

在第一种情况下,你是隐式调用的Html.fromHtml()结果toString()当你articleData串连它移除你的HTML格式。

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

Try using TextUtils.concat()而不是+在您的第一种情况下,因为这应该保留使用Html.fromHtml()创建的跨度。

+0

有没有推荐的地方下载用于Android的StringUtils库? – Rob

+0

@Rob:对不起 - 这是一个错字。它是'TextUtils',它在SDK中。 – CommonsWare

+0

(Mark?) - 非常感谢!在过去的几天里,你对我来说是一个巨大的帮助,在这里就是这样。 – Rob

0

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

所以第二个选择应该是使用的一个。要保留换行符,只需用brs替换它们即可。

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

谢谢。虽然这不是我正在寻找的东西,但我从这个答案中了解了更换,并用它来解决我遇到的另一个问题! – Rob