我使用TextView显示HTML字符串,例如:
“测试HTML&lt; a href = \”www.type1.com \“&gt; link1&lt; / a&gt;&lt; a href = \”www.type2.com \“&gt; link2&lt; / a&gt;”< / p>
如您所见,我需要处理两种不同的标记,因此我需要能够处理两种不同类型的标记并读取href属性。
我尝试使用Html.TagHandler:
private class MyTagHandler implements Html.TagHandler {
@Override
public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
Toast.makeText(getContext(), tag, Toast.LENGTH_LONG).show();
}
}
然而,未在&lt;上调用handleTag。 a&gt;标签。我做了测试并发现它只对自定义标签有影响。是否也可以处理标准标签?
答案 0 :(得分:1)
Html.TagHandler自定义实现的目标是提供未由android框架处理的标记的处理。因此,为了做你想做的事,一个解决方法是用你知道框架不会处理的另一个标签替换你想要处理的所有标签,这样它就会进入你的实现。例如,你可以用这样的方法来准备你的html:
public string prepareHTMLForTagHandling(string htmlSource)
{
if (htmlSource == null || htmlSource == "")
return null;
return htmlSource.replace("<a", "<acustomlink")
.replace("</a>", "<acustomlink>");
}
然后使用它:
Html.fromHtml(prepareHTMLForTagHandling(myHtml), null, myHtmlCustomTagHandler);
最后,在您的自定义标记处理程序实现中,您可以处理&#34; acustomlink&#34;作为标签而不是&#34; a&#34;。
希望它有所帮助。