我正在寻找Android Html类支持的HTML标签和属性的简洁描述,特别是由Html#fromHtml()处理的那些标签。官方文档指出“并非所有HTML标记都受支持”,但这并没有真正的帮助。我在网上找到的其他文档似乎已经过时,并且几乎没有说明所支持的属性。
另外,我相信我应该使用HtmlCompat而不是Html,但是我不清楚HtmlCompat的作用。该文档指出HtmlCompat是“向后兼容的Html版本”,但这意味着什么?当在API级别低于24的设备上运行时,我希望HtmlCompat#fromHtml()接受与Html在API 24+设备上相同的标签,但是不会。
HtmlCompat 让我们首先看一下HtmlCompat。使用支持库类(现在为AndroidX)的一个原因是“在运行该平台早期版本的设备上支持最新的平台功能”。从看源代码的HtmlCompat,很明显的是,向后兼容性,它提供的,允许调用HtmlCompat#fromHtml() (字符串源,INT标志)。
[ HtmlCompat#fromHtml(String,int) ]在API 24及更高版本上调用Html#fromHtml(String,int),否则将忽略标志,并使用Html#fromHtml(String)。
这同样适用于真正的HtmlCompat#toHtml(跨区文字,INT选项)。
因此,HtmlCompat不支持API 24以下的API版本上新支持的标记。实际上,对于任何API级别,HtmlCompat支持的标记与Html的平台版本都没有区别。
HTML / HtmlCompat支持的HTML标签 Android Html和HtmlCompat类支持以下以API 24开头的HTML标记。以下内容基于对API 29中发现的Html类的检查。
支持href标记。
1
> 1 支持颜色和面部属性。…
1 支持Html#ImageGetter的src标签。
1 2 2 <下标> <上标>
1元素支持text-align样式属性。支持的text-align值为:start,center和end。(不支持justify。)
2标签支持color,background [-color]和text-decoration属性。对于仅支持值文本修饰是行通。有关颜色支持的详细信息,请参见下文。
3 face可以是TypefaceSpan类支持的任何字体名称。
Html#fromHtml()标志 Html#fromHtml()的flags参数的值是:
FROM_HTML_SEPARATOR_LINE_BREAK_BLOCKQUOTE FROM_HTML_SEPARATOR_LINE_BREAK_DIV FROM_HTML_SEPARATOR_LINE_BREAK_HEADING FROM_HTML_SEPARATOR_LINE_BREAK_LIST FROM_HTML_SEPARATOR_LINE_BREAK_LIST_ITEM FROM_HTML_SEPARATOR_LINE_BREAK_PARAGRAPH
前面的每个标志均指定HTML处理器应在每个命名的块级元素之后添加一个换行符。如果未设置该标志,则处理器将添加两个换行符,这是旧版行为。
例如:设置FROM_HTML_SEPARATOR_LINE_BREAK_HEADING将在标题(
FROM_HTML_MODE_LEGACY:如果设置了此标志,则将在每个块级元素之后添加两个换行符。设置此标志与传递零相同。
FROM_HTML_MODE_COMPACT:此标志的使用与指定所有换行标志相同,这将删除块级元素中的所有多余换行符。(将仅添加一个换行符。)
FROM_HTML_OPTION_USE_CSS_COLORS:对于命名颜色,请使用CSS数字值,而不要使用Android Color类定义的值。
例如,如果将“ darkgray”指定为颜色,并且设置了此标志,则颜色值将是“ darkgray”(0xFFA9A9A9)的CSS值,而不是Color类(0xFF444444)中定义的“ darkgray”的值。如果未设置此标志,则该值将为Color类中的值。
CSS颜色 在Color类中定义的颜色:
浅绿色,黑色,蓝色,青色,深灰色,深灰色,紫红色,灰色,绿色,灰色,浅灰色,浅灰色,石灰,品红色,栗色,海军,橄榄色,紫色,红色,银色,蓝绿色,白色,黄色
与Android Color类颜色不同的CSS颜色是:
深灰色,深灰色,灰色,灰色,浅灰色、、浅灰色,绿色
尽管在Color类中将“白色”定义为有效颜色,但其值(0xFFFFFFFF)会使处理过程完全忽略该颜色。这是因为Color类(0xFFFFFFFF)为“白色”返回的值被解释为“未找到”条件(-1)。
一种解决方法是为颜色“白色”指定0xFFFFFF,然后在处理中添加前导“ FF”。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。