开发者社区> 问答> 正文

Android HTML类支持哪些HTML标签,如何使用HtmlCompat?

我正在寻找Android Html类支持的HTML标签和属性的简洁描述,特别是由Html#fromHtml()处理的那些标签。官方文档指出“并非所有HTML标记都受支持”,但这并没有真正的帮助。我在网上找到的其他文档似乎已经过时,并且几乎没有说明所支持的属性。

另外,我相信我应该使用HtmlCompat而不是Html,但是我不清楚HtmlCompat的作用。该文档指出HtmlCompat是“向后兼容的Html版本”,但这意味着什么?当在API级别低于24的设备上运行时,我希望HtmlCompat#fromHtml()接受与Html在API 24+设备上相同的标签,但是不会。

展开
收起
Puppet 2020-01-17 09:27:21 3694 0
1 条回答
写回答
取消 提交回答
  • 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

    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”。

2020-01-17 09:27:33
赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
相关问答
19
1
0
43
1
0
46
1
0
387
2
0
73
4
0
75
1
0
91
3
0
81
4
0
269
1
0
391
1
0
问答排行榜
最热
最新

相关课程

更多
推荐问答

相关文章

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载

相关实验场景

更多