【问题标题】:Get URL or HTML of clicked link within Android EditText获取 Android EditText 中点击链接的 URL 或 HTML
【发布时间】:2013-08-28 07:20:06
【问题描述】:

我正在尝试在 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 文本相关联。我可以使用getUrls() 获取EditText 中的所有URL,但仍然不知道点击了哪个。如果我可以这样做:EditText.getPortion(start, end).getUrls(),那会更接近,但到目前为止我还没有看到任何类似的方法。

【问题讨论】:

    标签: java android android-edittext spannable


    【解决方案1】:

    试试这个代码,

    EditText editText = (EditText) findViewById(R.id.edittext);
    editText.setText(someContent);
    Linkify.addLinks(editText, Linkify.ALL);
    Log.d(TAG, "HTML: " + Html.toHtml(editText.getEditableText()));
    

    还可以查看本教程,

    http://developer.android.com/reference/android/text/util/Linkify.html

    【讨论】:

    • 谢谢,但我并不想将网址变成链接。我试图在点击时获取链接文本的 URL。
    【解决方案2】:

    我知道这是一个 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-11-08
      • 2011-06-08
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多