public static class StringEditBean {
public String str;
public int color;
public ClickableSpan onClick;
public StringEditBean(String str, int color, ClickableSpan onClick) {
this.str = str;
this.color = color;
this.onClick = onClick;
}
}
//修改文本颜色并设置点击事件
public static void setTextOnTextView(TextView tv,String str, StringEditBean... beans) {
tv.setMovementMethod(LinkMovementMethod.getInstance());
SpannableStringBuilder ssb = new SpannableStringBuilder();
ssb.append(str);
for (int i = 0; i < beans.length; i++) {
StringEditBean bean = beans[i];
final int start = str.indexOf(bean.str);
ssb.setSpan(new ClickableSpan() {
@Override
public void onClick(@NonNull View widget) {
if (bean.onClick != null)
bean.onClick.onClick(widget);
}
@Override
public void updateDrawState(@NonNull TextPaint ds) {
if (bean.onClick != null)
bean.onClick.updateDrawState(ds);
//设置文件颜色
ds.setColor(bean.color);
// 去掉下划线
ds.setUnderlineText(false);
}
}, start, start + bean.str.length(), 0);
}
tv.setText(ssb);
}
StringUtil.setTextOnTextView(mBinding.tvCotent,
"详见《用户协议》和《隐私政策》全文",
new StringUtil.StringEditBean("《用户协议》", //需要变色的内容
getActivity().getResources().getColor(R.color.blue),//需要变的颜色
new ClickableSpan() { //该内容点击事件
@Override
public void onClick(@NonNull View view) {
WebActivity.start(getActivity(), 26, "用户协议");
}
}),
new StringUtil.StringEditBean("《隐私政策》", getActivity().getResources().getColor(R.color.blue), new ClickableSpan() {
@Override
public void onClick(@NonNull View view) {
WebActivity.start(getActivity(), 27, "隐私政策");
}
}));