【问题标题】:Setting minimum length for auto link设置自动链接的最小长度
【发布时间】:2018-07-30 11:29:49
【问题描述】:

我有一个很大的段落,其中可能包含数字、电子邮件地址和链接。所以我必须为我的文本视图设置setAutoLinkMask(Linkify.PHONE_NUMBERS | Linkify.EMAIL_ADDRESSES | Linkify.WEB_URLS)

内容可能包含不同数字的数字。我想设置至少 8 位数字作为电话号码链接。(例如:12345678)

是否可以为 Linkify.PHONE_NUMBERS 设置最小长度? 有没有办法做到这一点?

【问题讨论】:

    标签: android linkify autolink


    【解决方案1】:

    如果您可以使用Linkify.MatchFilter 指定最小长度或您的一些其他要求。 Android没有提供任何直接的方式。

    SO post 的某个地方也找到了一些很好的例子。

    【讨论】:

      【解决方案2】:

      使用以下模式:

          SpannableString buffer = new SpannableString(text);
          Pattern pattern = Pattern.compile("^[0-9]\d{7,9}$");
          Linkify.addLinks(buffer , pattern,"");
      

      【讨论】:

        【解决方案3】:

        是的,有可能。我研究了这种现象:-)

        要设置电话号码的最小长度,请使用以下代码:

        private final Linkify.MatchFilter matchFilterForPhone = new Linkify.MatchFilter() {
            @Override
            public boolean acceptMatch(CharSequence s, int start, int end) {
                int digitCount = 0;
                for (int i = start; i < end; i++) {
                    if (Character.isDigit(s.charAt(i))) {
                        digitCount++;
                        if (digitCount >= 6) { // HERE: number 6 is minimum
                            return true;
                        }
                    }
                }
                return false;
            }
        };
        

        要正确格式化和链接电话号码,请使用:

        final SpannableString s = new SpannableString(myTekst);
        Linkify.addLinks(s, android.util.Patterns.PHONE, "tel:", matchFilterForPhone, Linkify.sPhoneNumberTransformFilter);
        

        现在将格式化的s 放入您的TextView,然后调用:

        findViewById(R.id.message).setLinkTextColor(Color.BLUE);
        findViewById(R.id.message).setMovementMethod(LinkMovementMethod.getInstance());
        

        就是这样。感谢投票。

        【讨论】:

          猜你喜欢
          • 2013-06-28
          • 1970-01-01
          • 1970-01-01
          • 2016-03-09
          • 2011-05-11
          • 1970-01-01
          • 2012-10-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多