我使用一个TextView来显示一个HTML字符串,如:
"Test HTML link1 & lt;a href = "www.type2.com "> link2 "
如您所见,我需要处理两种不同类型的标记,因此我需要能够处理这两种不同类型的标记并读取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();
}
}
但是handleTag没有在<>标签。我做了测试,发现它只对自定义标签有影响。是否也可以处理标准标记?
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);
最后,在您的自定义标签处理程序实现中,您将"acustomlink"作为标签处理,而不是"a"。
希望能有所帮助。