如何使用TextView中的Html.fromHtml()创建所有可点击的电话号码,链接和网址

时间:2012-10-25 10:50:29

标签: 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);

然后这会使电话号码可点击,但不会使锚标签可点击 我应该怎么做Phoone号码,在使用Html.fromHtml()时链接都是可点击的?  因为我还必须阅读Html标签(比如'bold'标签,'br'标签)而且我不想使用WebView。

1 个答案:

答案 0 :(得分:1)

由于从跨区文本中删除跨距,因此出现此问题。 Linkify将在批准它之前删除所有html跨度。
 您必须存储html跨度并在linkify之后将其添加回来。

 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 \