我有一个很大的段落,其中可能有数字、电子邮件地址和链接。所以我必须 setAutoLinkMask(Linkify.PHONE_NUMBERS | Linkify.EMAIL_ADDRESSES | Linkify.WEB_URLS)
为我的文本视图设置。
内容可能包含不同数字的数字。我想设置至少 8 位数字作为电话号码链接。(例如:12345678)
是否可以为 Linkify.PHONE_NUMBERS 设置最小长度?有没有办法做到这一点?
如果您可以使用Linkify.MatchFilter指定最小长度或您的一些其他要求。Android没有提供任何直接的方式。
在这篇SO 帖子的某处也找到了一些很好的例子。
是的,有可能。我研究了这种现象:-)
要设置电话号码的最小长度,请使用以下代码:
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());
就这样。感谢投票。
使用以下模式:
SpannableString buffer = new SpannableString(text);
Pattern pattern = Pattern.compile("^[0-9]\d{7,9}$");
Linkify.addLinks(buffer , pattern,"");