所以我在这里抓到了一点点。我想格式化部分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(从数据库导入)丢失了它的回车。
任何人都能看到我在这里做错了什么?
答案 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>")));