Android TextView
1、设置不同颜色。
2、设置点击事件。
3、去掉点击事件的下划线。
使用到的TextView SpannableStringBuilder CharSequence
public static CharSequence getStyleText(Activity activity, String beforStr, String middleStr, String endStr, String serviceAgreement, String privacyAgreement) {
MyApplication app = MyApplication.getApp();
final SpannableStringBuilder style = new SpannableStringBuilder();
//设置文字
style.append(beforStr + serviceAgreement + middleStr + privacyAgreement + endStr);
//设置部分文字点击事件
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
// 点击事件
}
//去除连接下划线
@Override
public void updateDrawState(TextPaint ds) {
/**set textColor**/
ds.setColor(ds.linkColor);
/**Remove the underline**/
ds.setUnderlineText(false);
}
};
style.setSpan(clickableSpan, beforStr.length(), beforStr.length() + serviceAgreement.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置部分文字颜色
// ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(Color.parseColor("#0000FF"));
ForegroundColorSpan foregroundColorSpan = new ForegroundColorSpan(app.getResources().getColor(R.color.blue));
style.setSpan(foregroundColorSpan, beforStr.length(), beforStr.length() + serviceAgreement.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置部分文字点击事件
ClickableSpan clickableSpanPrivacy = new ClickableSpan() {
@Override
public void onClick(View widget) {
// 点击事件
}
//去除连接下划线
@Override
public void updateDrawState(TextPaint ds) {
/**set textColor**/
ds.setColor(ds.linkColor);
/**Remove the underline**/
ds.setUnderlineText(false);
}
};
style.setSpan(clickableSpanPrivacy, (beforStr + serviceAgreement + middleStr).length(), (beforStr + serviceAgreement + middleStr + privacyAgreement).length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//设置部分文字颜色
ForegroundColorSpan foregroundColorSpanPrivacy = new ForegroundColorSpan(app.getResources().getColor(R.color.blue));
style.setSpan(foregroundColorSpanPrivacy, (beforStr + serviceAgreement + middleStr).length(), (beforStr + serviceAgreement + middleStr + privacyAgreement).length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return style;
}
如果有不当的地方,欢迎指正。感谢以下博主,谢谢!
ClickableSpan 去除下划线https://blog.csdn.net/kk217777/article/details/51679707
Android TextView部分文字实现点击事件https://blog.csdn.net/Jason_HD/article/details/91872322