【问题标题】:Linkify.addLinks with Span not workingLinkify.addLinks 与 Span 不起作用
【发布时间】:2018-05-21 21:24:34
【问题描述】:

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

【问题讨论】:

  • 发布一个代码,你可以在其中展示你到目前为止尝试过的内容。

标签: android textview spannablestring autolink clickablespan


【解决方案1】:

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()]);
}

【讨论】:

    【解决方案2】:

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

    使用此代码使其工作:

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

    【讨论】:

      猜你喜欢
      • 2013-01-10
      • 1970-01-01
      • 2021-05-21
      • 2014-06-30
      • 1970-01-01
      • 2012-03-24
      • 1970-01-01
      • 1970-01-01
      • 2016-06-06
      相关资源
      最近更新 更多