我正在为android创建一个应用程序,它做的一件事就是获取服务器上现有的Html,并使用TextView将其显示给用户。大多数Html标签都很好(例如粗体),但在使用Html.fromHtml(txt)时,无序列表(也称为项目符号)等内容不能正确呈现
我注意到android文档中有一个BulletSpan。然而,对于如何正确使用它,绝对没有任何解释。
BulletSpan真的对我有帮助吗?我该如何使用它呢?
最后,如果它对我没有帮助,我如何在Java中更改所有列表,使它们前面有星号(就像markdown一样)?
请不要回答使用webview。
发布于 2011-06-04 09:46:48
查看android.text.Html的源代码(在here上可以找到),它看起来像是由fromHtml(String)转换的以下标记。
这些标签中的一些标签具有被转换的附加属性。例如,将转换字体颜色属性的下列值。
不幸的是,我还没有找到记录这些信息的地方。
为了转换额外的标记,比如ul和li,您需要提供一个适当的Html.TagHandler实现,对于这个实现,Google searching会生成examples。
希望这是关于如何处理翻译的足够信息。是否使用BulletSpan,我不能提供任何建议,因为我不知道我是否见过一个在运行中,而Google searching for android "BulletSpan example"出现了零匹配。在非公共类android.content.res.StringBlock内部,BulletSpan用于表示列表项。因此,它的应用前景看好。
发布于 2011-12-11 19:38:07
我一直在为Html.fromHtml()提供给您的有限控制而苦苦挣扎,最后我放弃了。
在将其提供给Html.fromHtml()之前,我已经使用HtmlCleaner清理了Html,并且我刚刚实现了到Spanned的直接转换。通过这种方式,我完全控制了元素的呈现方式,尽管我确实从原始的Html类复制了很多东西。
HtmlCleaner会将Html解析为TagNode对象树,我实现了一个CleanHtmlParser.fromTageNode()方法。它在这里:
BulletSpan给了我一些混合的结果,因为它在行的左侧呈现项目符号,然后缩进文本,而不是同时缩进文本和项目符号。我只是将它们放在页边空白处,并在文本前面打印了一个unicode项目符号字符。
https://stackoverflow.com/questions/6232650
复制相似问题