记录一下ClickableSpan的使用方法
final TextView textView = findViewById(R.id.tv_comment);
String username = "艾希";
SpannableString spannableString = new SpannableString(
getString(R.string.coment,username,"这是一条很长很长非常非常长的评论。"));
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this,"你点击了用户名",Toast.LENGTH_SHORT).show();
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(0xFF4F7DEF); //设置字体颜色
ds.setUnderlineText(false); //设置是否显示下划线
ds.clearShadowLayer(); //阴影
}
};
spannableString.setSpan(clickableSpan,0,username.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
textView.setText(spannableString);
textView.setHighlightColor(getResources().getColor(android.R.color.transparent)); //设置高亮背景颜色为透明色
//要加上这句点击事件才会触发
textView.setMovementMethod(LinkMovementMethod.getInstance());
划重点 一定要给TextView
添加一句setMovementMethod(LinkMovementMethod.getInstance());
这样点击事件才会生效。另外需要先setSpan
后再setText
才有用。
仅为记录用,更多参考Android的SpannableString和TextView使用
网友评论