HtmlCompat
首先让我们看一下 HtmlCompat。使用支持库类(现在是 AndroidX)的一个原因是“在运行早期平台版本的设备上支持最近的平台功能”。从查看 HtmlCompat 的 源代码 中可以明显看出,它提供的向后兼容性是为了允许调用 HtmlCompat#fromHtml() (String source,
int flags)。
[HtmlCompat#fromHtml(String, int)] 在 API 24 及更高版本上调用 Html#fromHtml(String, int),否则忽略标志并使用 Html#fromHtml(String)。
对于HtmlCompat#toHtml(Spanned text,int options)也是如此。
因此,HtmlCompat不支持API版本低于API 24的新支持标签。实际上,在任何API级别下,HtmlCompat支持的标签与平台版本的Html没有区别。
Html / HtmlCompat支持的HTML标签
(稍有过时)
更新:请参见here以获取更详细的文档,其中包括关于本机Android支持的HTML标签的信息。(2021年12月)
Android的Html和HtmlCompat类从API 24开始支持以下HTML标签。以下内容基于在API 29中找到的Html类的检查。
<a> 支持 href 标签。
<b>
<big>
<blockquote>1
<br>
<cite>
<del>
<dfn>
<div>>1
<em>
<font> 支持 color 和 face 属性。
<h1> … <h6>1
<i>
<img> 支持 Html#ImageGetter 中的 src 标签。
<li>>1 2
<p>1 2
<s>
<small>
<span>2
<strong>
<strike>
<sub>
<super>
<tt>
<u>
<ul>1
其他标签可以通过 Html#TagHandler 来支持。
1该元素支持text-align样式属性。 text-align支持的值为:start、center和end。(不支持justify。)
2标签支持color、background[-color]和text-decoration属性。 text-decoration的唯一支持值是line-through。有关颜色支持的详细信息,请参见下文。
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将在标题(<h1>, <h2>等)后添加一个换行符。
FROM_HTML_MODE_LEGACY:如果设置了此标志,则在每个块级元素后添加两个换行符。设置此标志与传递零相同。
FROM_HTML_MODE_COMPACT:使用此标志与指定所有换行符标志相同,这将从块级元素中删除所有额外的换行符。(只会添加一个换行符。)
FROM_HTML_OPTION_USE_CSS_COLORS:对于命名颜色,请使用CSS数字值而不是Android
Color类定义的值。
例如,如果指定“darkgray”作为颜色,并设置了此标志,则颜色值将是CSS值“darkgray”(0xFFA9A9A9),而不是
Color类中定义的“darkgray”的值(0xFF444444)。如果未设置此标志,则该值将是
Color类中的值。
CSS颜色
在Color类中定义的颜色:
aqua、black、blue、cyan、darkgray、darkgrey、fuchsia、gray、green、grey、lightgray、lightgrey、lime、magenta、maroon、navy、olive、purple、red、silver、teal、white、yellow
与Android Color类颜色不同的CSS颜色有:
darkgray、darkgrey、gray、grey、lightgray、lightgrey、green
虽然“white”在Color类中被定义为有效的颜色,但其值(0xFFFFFFFF)会导致处理忽略该颜色。这是因为Color类返回的“white”的值(0xFFFFFFFF)被解释为“未找到”条件(-1)。
一种解决方法是将颜色“白色”指定为0xFFFFFF,让处理程序添加前导的“FF”。
此事件报告(“为HtmlCompat支持的HTML标签提供文档”)可能会在未来提供更多信息。