6

我有带有 autoLink 的 textview,但是每当我将自定义跨度(ClickableSpan)添加到 textview 时,它到 web url 和手机号码的自动链接都不起作用。有什么简单的方法可以解决这个问题。样式已应用,但单击不起作用。

4

2 回答 2

4

https://stackoverflow.com/a/39494610/4639479我使用了这个答案并且工作正常

public static String[] extractLinks(String text) {
    List<String> links = new ArrayList<String>();
    Matcher m = Patterns.WEB_URL.matcher(text);
    while (m.find()) {
        String url = m.group();
        links.add(url);
    }
    return links.toArray(new String[links.size()]);
}
于 2017-09-12T05:23:34.097 回答
0

这是因为 Html.fromHtml 和 Linkify.addLinks 在处理文本之前删除了以前的跨度。

使用此代码使其工作:

 public static Spannable linkifyHtml(String html, int linkifyMask) {
    Spanned text = Html.fromHtml(html);
    URLSpan[] currentSpans = text.getSpans(0, text.length(), URLSpan.class);

    SpannableString buffer = new SpannableString(text);
    Linkify.addLinks(buffer, linkifyMask);

    for (URLSpan span : currentSpans) {
        int end = text.getSpanEnd(span);
        int start = text.getSpanStart(span);
        buffer.setSpan(span, start, end, 0);
    }
    return buffer;
}
于 2017-09-11T11:16:50.803 回答