2

Textview で Html.fromHtml() メソッドを使用して、リンク、URL、電話番号をすべてクリック可能にしたいと考えています。私はこれを試しています----

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);

これにより、電話番号はクリック可能になりますが、アンカー タグはクリック可能になりません。
Html.fromHtml() を使用しているときに、電話番号とリンクの両方をクリック可能にするにはどうすればよいですか?
Html タグ ('bold' タグ、'br' タブなど) も読み取る必要があるため、WebView を使用したくありません。

4

1 に答える 1

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;
    }

詳細については、この回答を参照してください:テキストビューで 3 種類のリンクすべてを作成する方法\

于 2016-09-24T19:57:53.177 に答える