我正在使用 TextView 来显示 HTML 字符串,例如:
如您所见,我需要处理两种不同类型的标签,因此我需要能够处理这两种不同类型的标签并读取 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();
}
}
最佳答案
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”处理。
希望对您有所帮助。
关于Android TagHandler 对标准标签没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551751/