背景

需要实现一段文字内容中,某些文字需要字体颜色的改变,和点击事件的发生。

首先需要先new一个SpannableStringBuilder,如下所示

1
2
3
4
5
6
final SpannableStringBuilder guide = new SpannableStringBuilder();String guide_front = "尊敬的用户,欢迎您注册成为本应用用户,在注册前请您仔细阅读";
String guide_agreement = "《用户协议》";
String guide_connect = "与";
String guide_privacy = "《隐私政策》";
String guide_last = ",了解我们对您使用我们APP制定的规则,您个人信息的处理以及申请权限的目的和使用范围。";
guide.append(guide_front+guide_agreement+guide_connect+guide_privacy+guide_last);

接下来就是设置部分文字内容的点击事件

1
2
3
4
5
6
7
8
9
//设置部分文字点击事件
ClickableSpan goAgreement = new ClickableSpan() {
@Override
public void onClick(View widget) {
//点击事件需要进行的操作
}
};

guide.setSpan(goAgreement, 31, 37, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

设置部分文字的颜色

1
2
3
4
5
6
//设置部分文字颜色
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#FF7733"));
guide.setSpan(foregroundColorSpan, 38, 44, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//经历三步处理后,最终配置给TextView
MyTextView.setMovementMethod(LinkMovementMethod.getInstance());
MyTextView.setText(guide);