Android TagHandler 对标准标签没有影响

标签 android textview

我正在使用 TextView 来显示 HTML 字符串,例如:

"测试 HTML link1 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”处理。

希望对您有所帮助。

关于Android TagHandler 对标准标签没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551751/

相关文章:

android - setText 后的 TextView 和 Size

java - 检测是否从上一个 Activity 中按下了后退按钮

java - Android - setRequestedOrientation - Activity 和 View 生命周期

android - Android 应用程序中 ECC key 的保护

android - 从 Android 浏览器启动 youtube 应用程序

java - 每 3 秒更新一次 TextView 值

android - 我能知道 X dp 宽度的 TextView 可以容纳多少个字符吗?

android - 在继承 View 的自定义 View 中添加 TextView

android - MediaPlayer seekTo 不起作用

android - 如何将我的 Android 应用程序与 mongodb.atlas 连接?