Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android TextView上支持的html标记_Android_Html_Textview_Tags_Settext - Fatal编程技术网

Android TextView上支持的html标记

Android TextView上支持的html标记,android,html,textview,tags,settext,Android,Html,Textview,Tags,Settext,我需要Android TextView上支持的HTML标记的正式列表。 我正在使用textView.setText(Html.fromHtml(label))但我不知道支持哪些标记。注意: 这是针对API 27的。早期版本不保证支持此列表中的标记,后续版本也一样(可以删除)。有关适用列表,请参见适用API版本的等效类 似乎这些都没有记录在案(更正,2021:),也没有具体的标签添加时间列表(2021:似乎仍然如此)。我认为HTML标记需要在某个地方声明,如果不是在文档中,至少是在代码中。幸运的

我需要Android TextView上支持的HTML标记的正式列表。 我正在使用
textView.setText(Html.fromHtml(label))但我不知道支持哪些标记。

注意: 这是针对API 27的。早期版本不保证支持此列表中的标记,后续版本也一样(可以删除)。有关适用列表,请参见适用API版本的等效类


似乎这些都没有记录在案(更正,2021:),也没有具体的标签添加时间列表(2021:似乎仍然如此)。我认为HTML标记需要在某个地方声明,如果不是在文档中,至少是在代码中。幸运的是,Android的HTML解析非常简单,可以轻松地理解相关的内容,而无需过多地使用垃圾桶

对于将来的版本:您可以使用IntelliJ或其他IDE来探索Html.java的源代码,也可以随时访问AOSP站点或等效的GitHub存储库。使用IDE可能是最简单的选择

Html#fromHtml(String,int)
调用
Html#fromHtml(String,int,ImageGetter,TagHandler
。最后一个方法创建一个
htmltospan-dconverter
,并返回转换结果。我深入研究了该代码,发现:

其他方法包括受支持的属性(在
中):


:

size
显然不受支持


:


调用,这将提供一个属性:

text-align
值得特别注意的是支持的align变量

  • 中心-标准和自解释
  • 开始-左对齐
  • 结束-右对齐
在RTL布局中,开始和结束可能是反向的-我还没有测试过


,和呼叫,从而访问:


文本装饰
似乎仅限于
行通过

您可以在这里找到它,请查看Commansware他们在以后的Android版本中肯定添加了更多。
    对我很有用。@MarkHerscher可能在2017年以后的版本中添加。我会看看是否能找到更新的列表(除非原始源代码更新)更新了帖子。通过源代码查找支持的标记和属性工作!我同意在我能找到的任何地方都没有文档记录,所以我故意含糊其辞。
        if (tag.equalsIgnoreCase("br")) {
            // We don't need to handle this. TagSoup will ensure that there's a </br> for each <br>
            // so we can safely emit the linebreaks when we handle the close tag.
        } else if (tag.equalsIgnoreCase("p")) {
            startBlockElement(mSpannableStringBuilder, attributes, getMarginParagraph());
            startCssStyle(mSpannableStringBuilder, attributes);
        } else if (tag.equalsIgnoreCase("ul")) {
            startBlockElement(mSpannableStringBuilder, attributes, getMarginList());
        } else if (tag.equalsIgnoreCase("li")) {
            startLi(mSpannableStringBuilder, attributes);
        } else if (tag.equalsIgnoreCase("div")) {
            startBlockElement(mSpannableStringBuilder, attributes, getMarginDiv());
        } else if (tag.equalsIgnoreCase("span")) {
            startCssStyle(mSpannableStringBuilder, attributes);
        } else if (tag.equalsIgnoreCase("strong")) {
            start(mSpannableStringBuilder, new Bold());
        } else if (tag.equalsIgnoreCase("b")) {
            start(mSpannableStringBuilder, new Bold());
        } else if (tag.equalsIgnoreCase("em")) {
            start(mSpannableStringBuilder, new Italic());
        } else if (tag.equalsIgnoreCase("cite")) {
            start(mSpannableStringBuilder, new Italic());
        } else if (tag.equalsIgnoreCase("dfn")) {
            start(mSpannableStringBuilder, new Italic());
        } else if (tag.equalsIgnoreCase("i")) {
            start(mSpannableStringBuilder, new Italic());
        } else if (tag.equalsIgnoreCase("big")) {
            start(mSpannableStringBuilder, new Big());
        } else if (tag.equalsIgnoreCase("small")) {
            start(mSpannableStringBuilder, new Small());
        } else if (tag.equalsIgnoreCase("font")) {
            startFont(mSpannableStringBuilder, attributes);
        } else if (tag.equalsIgnoreCase("blockquote")) {
            startBlockquote(mSpannableStringBuilder, attributes);
        } else if (tag.equalsIgnoreCase("tt")) {
            start(mSpannableStringBuilder, new Monospace());
        } else if (tag.equalsIgnoreCase("a")) {
            startA(mSpannableStringBuilder, attributes);
        } else if (tag.equalsIgnoreCase("u")) {
            start(mSpannableStringBuilder, new Underline());
        } else if (tag.equalsIgnoreCase("del")) {
            start(mSpannableStringBuilder, new Strikethrough());
        } else if (tag.equalsIgnoreCase("s")) {
            start(mSpannableStringBuilder, new Strikethrough());
        } else if (tag.equalsIgnoreCase("strike")) {
            start(mSpannableStringBuilder, new Strikethrough());
        } else if (tag.equalsIgnoreCase("sup")) {
            start(mSpannableStringBuilder, new Super());
        } else if (tag.equalsIgnoreCase("sub")) {
            start(mSpannableStringBuilder, new Sub());
        } else if (tag.length() == 2 &&
                Character.toLowerCase(tag.charAt(0)) == 'h' &&
                tag.charAt(1) >= '1' && tag.charAt(1) <= '6') {
            startHeading(mSpannableStringBuilder, attributes, tag.charAt(1) - '1');
        } else if (tag.equalsIgnoreCase("img")) {
            startImg(mSpannableStringBuilder, attributes, mImageGetter);
        } else if (mTagHandler != null) {
            mTagHandler.handleTag(true, tag, mSpannableStringBuilder, mReader);
        }
    }
    
    src
    
    color
    face
    
    href
    
    text-align
    
    text-decoration
    background-color or background
    color