/**
* 设置TextView文本中的电话号码可点击
* @param text 包含11位手机号码的字符串
* @param textView 包含可点击手机号的TextView
*/
public static void setSpannableString(String text,TextView textView){
String phoneNum = getPhoneNum(text);
SpannableString spannableString = new SpannableString(text);
spannableString.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.BLUE);//设置电话号码字体颜色
ds.setUnderlineText(true);//设置电话号码下划线
}
@Override
public void onClick(@NonNull View widget) {
//电话号码点击事件
}
}, text.indexOf(phoneNum), text.indexOf(phoneNum) + 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
textView.setMovementMethod(LinkMovementMethod.getInstance());
}
/**
* 获取字符串里的里的手机号码
* @param text 包含手机号的字符串
* @return 手机号
*/
public static String getPhoneNum(String text){
String regex = "1[35789]\\d{9}";//正则规则有待优化
Pattern p = Pattern.compile(regex);
Matcher matcher = p.matcher(text);
if (matcher.find()) {
return matcher.group();
}
return "";
}
使用SpannableString实现TextView文本中的电话号码可点击
最新推荐文章于 2019-05-22 14:59:08 发布