android Html.TagHandler类 - 我可以覆盖标签功能

时间:2018-03-22 02:59:23

标签: android

我想了解tagHandler的工作原理。让我说我在html中有一个标签,我想要覆盖它的功能。我的意思是它预计会增加一条新线。但是让我说我​​想要它而不是打印文本。所以这就是我的尝试:

public class MyTagHandler implements Html.TagHandler {
       @Override
       public void handleTag(boolean opening, String tag, Editable output,
                             XMLReader xmlReader) {

           if(tag.equals("br")) && !opening) output.append("hello world");
       }
   }

然后我这样运行:

Html.fromHtml(myHTMLString,null,new MyTagHandler());

似乎没问题,但我不想让它打印出新的一行。我想实际覆盖标签的作用。所以它应该只打印"你好世界"没有其他的。这可能吗 ?

1 个答案:

答案 0 :(得分:0)

我发现了如何做到这一点。我必须重命名为自定义标签。这样:

myHTML.replaceAll( “”, “”)的replaceAll( “
”, “”);

然后在我的处理程序中,我可以找到那个customTag(什么都不做)并让它做点什么。

 public class UlTagHandler implements Html.TagHandler {
        //for ul in nougat and up this tagHandler is completely ignored
        @Override
        public void handleTag(boolean opening, String tag, Editable output,
                              XMLReader xmlReader) {

            if (tag.equals("customtag") && opening)
                output.append("do whatever you want");
            if (tag.equals("customtag") && !opening)
                output.append("closed tag, do whatever you want");
        }
    }