实现TextView局部样式及点击事件
例:上图中的用户服务协议,及隐私协议
private String serviceContractStr="请您阅读并统一我们的《用户服务协议》与《隐私政策》,了解您的用户权益及相关使用数据的方法";
serviceContract =findViewById(R.id.serviceContract);
//创建 SpannableString 对象
SpannableString spanColor = new SpannableString(serviceContractStr);
//为SpannableString 添加一个局部样式 及点击事件
spanColor.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
ProtocolActivity.start(getContext(),0);
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
super.updateDrawState(ds);
//设置颜色
ds.setColor(Color.parseColor("#3181C1"));
//取消下划线
ds.setUnderlineText(false);
}
}, serviceContractStr.indexOf("《用户服务协议》"), serviceContractStr.indexOf("与"), 0);
serviceContract.setText(spanColor);
serviceContract.setMovementMethod(LinkMovementMethod.getInstance()); //不设置此处无法触发点击事件