我正在为Android创建应用程序,其中一项工作是在服务器上使用现有的Html并使用TextView将其显示给用户。大多数Html标签都很好(例如粗体),但在使用Html.fromHtml(txt)
我注意到android文档中存在BulletSpan。但是,如何正确使用它绝对没有解释。
BulletSpan确实会帮助我,我该如何使用它?
最后,如果它对我没有帮助,我怎样才能改变所有列表,在Java前面用星号(比如markdown)?
请不要回答使用webview。
答案 0 :(得分:2)
查看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
用于表示列表项。因此,它的使用看起来很有希望。
答案 1 :(得分:1)
我一直在努力克服Html.fromHtml()给你的有限控制,我终于放弃了。
我已经使用HtmlCleaner清理Html,然后将其提供给Html.fromHtml(),我刚刚实现了直接转换为Spanned。这样我就可以完全控制元素的呈现方式,不过我从原来的Html类中复制了很多。
HtmlCleaner将Html解析为TagNode对象树,并实现了CleanHtmlParser.fromTageNode()方法。就在这里:
BulletSpan给了我一些混合的结果,因为它渲染了线条左边的子弹,然后缩进文本而不是缩进文本和项目符号。我只是将它们包裹在边缘并在文本前面打印了一个unicode项目符号。