【问题标题】:Html.fromHtml losing formattingHtml.fromHtml 丢失格式
【发布时间】:2014-06-19 10:29:18
【问题描述】:

所以我在这里遇到了一个小问题 22。我想格式化我的 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]));

看起来像: 锻炼详情:

test 测试测试(注意没有回车)

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

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

【问题讨论】:

    标签: android android-sqlite


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 有没有推荐的地方下载 StringUtils lib for android?
    • @Rob:对不起——那是一个错字。是TextUtils,在SDK中。
    • (马克?) - 非常感谢!在过去的几天里,您在 SO 上为我提供了巨大的帮助。
    • @Rob:我试图变得有用。 :-)
    • 我不完全确定如何给您发消息(如果可以的话),但由于我在这里收到了您的帮助,我一直在考虑购买您的书。再次感谢。
    【解决方案2】:

    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>")));
    

    【讨论】:

    • 谢谢。虽然这不是我想要的,但我从这个答案中了解了 .replace 并用它来解决我遇到的另一个问题!
    猜你喜欢
    • 2019-11-11
    • 2015-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-29
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多