android - 如何在 TextView 中使用 Html.fromHtml() 使电话号码、链接和 url 都可以点击

标签 android textview hyperlink

我想使用 Html.fromHtml() 方法在 TextView 。我正在尝试这个 ----

txt.setText(Html.fromHtml("<b> Hi this is my text </b> <a href=\"http:\/\/bruynzeelkeukens.nl\/keukenapparatuur\/fornuizen\">fornuizen<\/a>  Call me here: 011 058 299 88   ");
            txt.setMovementMethod(LinkMovementMethod.getInstance());

但这不会使电话号码可点击。但是如果我使用

txt.setAutoLinkMask(Linkify.ALL);
 txt.setLinksClickable(true);

然后这会使电话号码可点击但不会使 anchor 标记可点击。
我应该怎么做才能在使用 Html.fromHtml() 时使电话号码和链接都可点击?
因为我还必须阅读 Html 标签(如“粗体”标签、“br”标签)而且我不想使用 WebView。

最佳答案

此问题的发生是因为从跨区文本中删除了跨区。 Linkify 将在应用它自己的之前删除所有 html 跨度。
您必须存储您的 html 跨度并在链接后将其添加回去。

 private Spannable linkifyHTML(CharSequence text) {
        Spannable s = new SpannableString(text);

        URLSpan[] old = s.getSpans(0, s.length(), URLSpan.class);
        LinkSpec oldLinks[] = new LinkSpec[old.length];

        for (int i = 0; i < old.length; i++) {
            oldLinks[i] = new LinkSpec(old[i], s.getSpanStart(old[i]), s.getSpanEnd(old[i]));
        }

       Linkify.addLinks(s, Linkify.ALL);
       for (LinkSpec span : oldLinks) {
           s.setSpan(span.span, span.start, span.end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
       }
       return s;
    }

请参阅此答案以获取更多信息:How to make all 3 types of links in textview\

关于android - 如何在 TextView 中使用 Html.fromHtml() 使电话号码、链接和 url 都可以点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13066968/

相关文章:

android - AsyncTask 和 Firebase

android - 将 ZXing 库直接集成到我的 Android 应用程序中

java - 为什么layout_gravity设置为left/right在水平LinearLayout中没有效果?

java - Webview 是否有任何引用其域的外部链接?

android - 为什么在文档中隐藏了 WebChromeClient 中的 openFileChooser?使用这种方法安全吗?

java - 如何将android volley gson请求解析为对象列表/集合

android - 在整个屏幕上移动 TextView

单击时 Android TextView 链接不突出显示

html - 如何将超链接添加到悬停下拉菜单的主标题?

css - 用图片替换 CSS 链接或隐藏?