首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将HTML转换为PlainText

将HTML转换为PlainText
EN

Stack Overflow用户
提问于 2011-06-04 05:00:21
回答 2查看 1.1K关注 0票数 3

我正在为android创建一个应用程序,它做的一件事就是获取服务器上现有的Html,并使用TextView将其显示给用户。大多数Html标签都很好(例如粗体),但在使用Html.fromHtml(txt)时,无序列表(也称为项目符号)等内容不能正确呈现

我注意到android文档中有一个BulletSpan。然而,对于如何正确使用它,绝对没有任何解释。

BulletSpan真的对我有帮助吗?我该如何使用它呢?

最后,如果它对我没有帮助,我如何在Java中更改所有列表,使它们前面有星号(就像markdown一样)?

请不要回答使用webview。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-04 09:46:48

查看android.text.Html的源代码(在here上可以找到),它看起来像是由fromHtml(String)转换的以下标记。

  • br,p,div,em,b,强,引用,dfn,i,大,小,字体,块引用,tt,a,u,sup,sub,h1,h2,h3,h4,h5,h6,img

这些标签中的一些标签具有被转换的附加属性。例如,将转换字体颜色属性的下列值。

  • aqua,黑色,蓝色,紫红色,绿色,灰色,石灰,栗色,海军蓝,橄榄色,紫色,红色,银色,青色,白色,黄色

不幸的是,我还没有找到记录这些信息的地方。

为了转换额外的标记,比如ul和li,您需要提供一个适当的Html.TagHandler实现,对于这个实现,Google searching会生成examples

希望这是关于如何处理翻译的足够信息。是否使用BulletSpan,我不能提供任何建议,因为我不知道我是否见过一个在运行中,而Google searching for android "BulletSpan example"出现了零匹配。在非公共类android.content.res.StringBlock内部,BulletSpan用于表示列表项。因此,它的应用前景看好。

票数 2
EN

Stack Overflow用户

发布于 2011-12-11 19:38:07

我一直在为Html.fromHtml()提供给您的有限控制而苦苦挣扎,最后我放弃了。

在将其提供给Html.fromHtml()之前,我已经使用HtmlCleaner清理了Html,并且我刚刚实现了到Spanned的直接转换。通过这种方式,我完全控制了元素的呈现方式,尽管我确实从原始的Html类复制了很多东西。

HtmlCleaner会将Html解析为TagNode对象树,我实现了一个CleanHtmlParser.fromTageNode()方法。它在这里:

https://github.com/NightWhistler/PageTurner/blob/master/src/net/nightwhistler/pageturner/html/CleanHtmlParser.java

BulletSpan给了我一些混合的结果,因为它在行的左侧呈现项目符号,然后缩进文本,而不是同时缩进文本和项目符号。我只是将它们放在页边空白处,并在文本前面打印了一个unicode项目符号字符。

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

https://stackoverflow.com/questions/6232650

复制
相关文章

相似问题

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