2

EditTextでクリックされたリンクの URL を取得しようとしています。リンクに触れて、その URL で何かをしたい。私が得た最も近いものは、カーソルが置かれているスパンが URLSpan スタイルであるかどうかを判断することです:

int s1 = Math.max(mText.getSelectionStart(), 0);
int s2 = Math.max(mText.getSelectionEnd(), 0);
Spannable raw = new SpannableString(mText.getText());
CharacterStyle[] spans = raw.getSpans(s1, s2, CharacterStyle.class);
for (CharacterStyle span : spans) {
    if(span.getClass().equals(android.text.style.URLSpan.class)){
        //is a link, but what is the URL?

    }
}

すべてを HTML 文字列に変換すると、プレーン テキストのカーソル位置を HTML テキストに関連付ける方法がわかりません。を使用して EditText 内のすべての URL を取得できますが、どの URLgetUrls()がクリックされたかはまだわかりません。のようなことができればEditText.getPortion(start, end).getUrls()、それはより近いものになりますが、これまでのところ、そのような方法は見たことがありません。

4

2 に答える 2

1

これは 4 年前の回答であることは承知していますが、今後の訪問者のために次のように回答します。

for (CharacterStyle span : spans) {
    if(span.getClass().equals(android.text.style.URLSpan.class)){
        //you almost had it here, just cast the span as a URLspan
        URLSpan u = (URLSpan)spans[j];
        String span_url = u.getURL();
    }
}
于 2017-12-15T13:41:46.373 に答える