在文本中对不同文字的特殊处理如邮件、电话等可以使用SpannableString
- 属性详解
小栗子
有一串字符串为 您的电话13412345678 被ID为123456789的账户绑定。如果我只想高亮电话号码那就可以采用下面方式
mTvContent.setText(mContent);
Pattern p = Pattern.compile("1[0-9]{10}");//电话正则
Matcher matcher = p.matcher(mTvContent.getText().toString().trim());
String str = null;
if (matcher.find()){
str = matcher.group();
}
if (str != null) {
int start = mContent.indexOf(str);
if (start != -1) {
final String tel = str;
SpannableString ss = new SpannableString(mContent);
ss.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Intent dialIntent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + tel));//跳转到拨号界面,同时传递电话号码
startActivity(dialIntent);
}
}, start, start + str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
mTvContent.setMovementMethod(LinkMovementMethod.getInstance());
mTvContent.setText(ss);
}
}