为自动链接设置最小长度



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

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

是否可以为linkify.phone_numbers设置最小长度?无论如何是否可以实现这一目标?

如果您可以使用linkify.matchfilter来指定最小长度或其他一些要求。Android没有任何直接方法。

也在这个帖子中的某个地方找到了一些很好的例子。

使用以下模式:

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

是的,可能。我研究了这个现象: - (

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

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放在您的文本视图中,并致电:

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

仅此而已。感谢投票。

最新更新