例如一个字符串改变《注册协议》和《隐私政策》的颜色并且添加点击事件
private String registerAgreement = "《注册协议》";
private String privateAgreement = "《隐私政策》";
String text = mViewBinding.registerAgreementContent.getText().toString();
// 《注册协议》
int startIndex = text.indexOf(registerAgreement);
int endIndex = startIndex + registerAgreement.length();
// 《隐私政策》
int startPrivateIndex = text.indexOf(privateAgreement);
int endPrivateIndex = startPrivateIndex + privateAgreement.length();
SpannableString spannableString = new SpannableString(text);
// 为 《注册协议》 文字添加点击事件
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
// 处理点击事件
Intent intent = new Intent(LoginActivity.this, RegisterAgreementActivity.class);
startActivity(intent);
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
// 去除下划线 因为默认带有下划线
ds.setUnderlineText(false);
}
}, startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 为 《隐私政策》 文字添加点击事件
spannableString.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
// 处理点击事件
Intent intent = new Intent(LoginActivity.this, PrivacyAgreementActivity.class);
startActivity(intent);
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
}
}, startPrivateIndex, endPrivateIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置《注册协议》字段颜色
spannableString.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.color_1BC1C3)), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
// 设置《隐私政策》字段颜色
spannableString.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.color_1BC1C3)), startPrivateIndex, endPrivateIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
mViewBinding.registerAgreementContent.setMovementMethod(LinkMovementMethod.getInstance());
mViewBinding.registerAgreementContent.setText(spannableString);