在开发过程中,可能会遇到某个textview上有一行文字,其中某几个文字颜色不同,并且可点击,还可响应点击事件,附上代码。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = (TextView) findViewById(R.id.text1);
SpannableStringBuilder spannable = new SpannableStringBuilder("可以点击的");
spannable.setSpan(new ForegroundColorSpan(Color.RED), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //这个一定要记得设置,不然点击不生效textView.setMovementMethod(LinkMovementMethod.getInstance());
spannable.setSpan(new TextClick(), 2, 4
, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannable);
avoidHintColor(textView);
}
private class TextClick extends ClickableSpan {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, "点击了这个", Toast.LENGTH_SHORT).show();
//在此处理点击事件
// Log.e("------->", "点击了"); }
@Override public void updateDrawState (TextPaint ds){
//ds.setColor(ds.linkColor);
// ds.setColor()设定的是span超链接的文本颜色
// ds.setUnderlineText(true);
// }
// }
// 点击后的背景颜色(HighLightColor)属于TextView的属性,
// Android4.0以上默认是淡绿色,低版本的是黄色
private void avoidHintColor (View view){
if (view instanceof TextView) {
((TextView) view).setHighlightColor(getResources().getColor
(android.R.color.transparent));
}
}
}
}
}
}