1.在Android开发中,经常会用到一行字,要显示不同的颜色,如果用多个TextView的话,过于浪费空间,浪费重绘的时间,所以通常就用SpannableString来解决这个问题
2.代码如下:
SpannableStringBuilder positionName = new SpannableStringBuilder(textStr);//传入你的字符串
SpannableString spannableString = new SpannableString(text);
spannableString.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.parseColor("#999999"));//设置需要的颜色
ds.setUnderlineText(false);
}
@Override
public void onClick(View widget) {
//设置这段文字的点击事件
}
}, 0,3, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setText(positionName.append(spannableString));//特别说明一点,在setText()方法时,传入的值必须是SpannableStringBuilder对象,不能用positionName+spannableString的方式拼接字符串,必须是positionName.append(spannableString),否则没有效果