【问题标题】:Android, EditText - How to "delinkify" already linkified (using Linkify class) textAndroid,EditText - 如何“取消链接”已经链接的(使用 Linkify 类)文本
【发布时间】:2015-05-23 22:49:57
【问题描述】:

有没有办法删除Linkify.addLinks(myEditText, Linkify.WEB_URLS); 完成的“链接”?

它应该被Linkify.addLinks(myEditText, 0); 禁用,但它根本不影响链接文本。即使使用myEditText.setLinksClickable(false); 也完全没有效果(链接仍然可以点击)。

我想出的唯一解决方案有点老套:

myEditText.setText(myEditText.getText().toString());

【问题讨论】:

    标签: android hyperlink android-edittext linkify


    【解决方案1】:

    它应该被 Linkify.addLinks(myEditText, 0); 禁用

    鉴于方法名称以“add”开头,我对它保留现有内容的完整性并不感到惊讶。

    有没有办法删除由 Linkify.addLinks(myEditText, Linkify.WEB_URLS); 完成的“链接”?

    您可以尝试从Spannable 中查找并删除所有URLSpan(或者可能是ClickableSpan)对象:

    Spannable stuff=myEditText.getText();
    URLSpan[] spans=stuff.getSpans(0, stuff.length(), URLSpan.class);
    
    for (URLSpan span : spans) {
      stuff.removeSpan(span);
    }
    
    // *maybe* need myEditText.setText(stuff), not sure
    

    【讨论】:

    • 是的,此代码有效,不需要“myEditText.setText(stuff)”。谢谢!
    • @Tron:啊,很好。我不确定getText() 是否返回了正在编辑的“实时”对象或副本,如果它是副本,则需要setText() 部分。很高兴它对你有用!
    猜你喜欢
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多