首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在android文本视图中显示<ul> <li>

在android文本视图中显示<ul> <li>
EN

Stack Overflow用户
提问于 2012-06-27 02:45:23
回答 4查看 40.5K关注 0票数 29

我有一个包含ul和li的字符串。我正在尝试在textview中以HTML格式显示它们。

textView.setText(Html.fromHtml(myHtmlText));

但是textview显示的是纯文本。如何在textview中设置ul和li标记的格式?

EN

回答 4

Stack Overflow用户

发布于 2016-04-30 00:05:07

您可以使用Html.TagHandler。

在您的示例中,它将如下所示:

代码语言:javascript
复制
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•");
    }
}

代码语言:javascript
复制
textView.setText(Html.fromHtml(myHtmlText, null, new UlTagHandler()));
票数 52
EN

Stack Overflow用户

发布于 2014-12-27 20:07:55

根据下面的答案,你不能在这里使用所有的HTML标签;

https://stackoverflow.com/a/3150456/2275962

但是,当然,在Android TextView中有一种显示项目符号的方式。您可以将<li>标记替换为&#149; (这是项目符号的HTML码)。

如果您想尝试其他列表图标,请使用表格中的首选图标是此链接;

http://www.ascii-code.com/

票数 4
EN

Stack Overflow用户

发布于 2019-02-15 05:47:57

要让API级别M (23)及更低级别的应用程序接口正常工作,一个非常简单的方法就是在HTML字符串中使用以下代码:

代码语言:javascript
复制
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
    }
}

然后,您可以使用:

代码语言:javascript
复制
Html.fromHtml("<ul><li> test </li></ul>".formattedHtml())

API N及以上版本无需TagHandler,如https://stackoverflow.com/a/40524835中所述,android.text.Html支持liul标签。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11214001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档