我有一个包含ul和li的字符串。我正在尝试在textview中以HTML格式显示它们。
textView.setText(Html.fromHtml(myHtmlText));
但是textview显示的是纯文本。如何在textview中设置ul和li标记的格式?
发布于 2016-04-30 00:05:07
您可以使用Html.TagHandler。
在您的示例中,它将如下所示:
public class UlTagHandler implements Html.TagHandler{
@Override
public void handleTag(boolean opening, String tag, Editable output,
XMLReader xmlReader) {
if(tag.equals("ul") && !opening) output.append("\n");
if(tag.equals("li") && opening) output.append("\n\t•");
}
}
和
textView.setText(Html.fromHtml(myHtmlText, null, new UlTagHandler()));
发布于 2014-12-27 20:07:55
根据下面的答案,你不能在这里使用所有的HTML标签;
https://stackoverflow.com/a/3150456/2275962
但是,当然,在Android TextView中有一种显示项目符号的方式。您可以将<li>
标记替换为•
(这是项目符号的HTML码)。
如果您想尝试其他列表图标,请使用表格中的首选图标是此链接;
发布于 2019-02-15 05:47:57
要让API级别M (23)及更低级别的应用程序接口正常工作,一个非常简单的方法就是在HTML字符串中使用以下代码:
private fun String.formattedHtml(): String {
// Work around for API Versions lower than N, Html.fromHtml does not render list items correctly
return if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
this.replace("<ul>", "")
.replace("</ul>", "")
.replace("<li>", "<p>• ")
.replace("</li>", "</p>")
} else {
this
}
}
然后,您可以使用:
Html.fromHtml("<ul><li> test </li></ul>".formattedHtml())
API N及以上版本无需TagHandler
,如https://stackoverflow.com/a/40524835中所述,android.text.Html
支持li
和ul
标签。
https://stackoverflow.com/questions/11214001
复制相似问题