同一个 TextView 设置多个样式多个点击事件
先看样式图片( 评论内容为一个 TextView ):
xml 文件中不给出代码了,就是一个容器里面有一个 TextView ;
下面是 Activity 代码:
String oneName = "直男";//第一个人
String twoName = "污女";//第二个人
String commentContext = "你在干嘛";//第一个人回复第二个人的内容
int oneNameSize = oneName.length();
int twoNameSize = twoName.length();
SpannableString spannableInfo = new SpannableString(oneName + "回复" + twoName + ":" + commentContext);
//第一个人(直男)的样式,点击事件
spannableInfo.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.parseColor("#FFFFAA00"));//设置颜色
ds.setUnderlineText(false);//去掉下划线
}
@Override
public void onClick(View view) {
//设置直男的点击事件
Log.e("=====","直男");
}
}, 0, oneNameSize, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//"回复"两个字的样式
spannableInfo.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.parseColor("#FF151515"));//设置颜色
ds.setUnderlineText(false);//去掉下划线
}
@Override
public void onClick(View widget) {
}
}, oneNameSize , twoNameSize + 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//第2个人(污女)的样式,点击事件
spannableInfo.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.parseColor("#FFFFAA00"));//设置颜色
ds.setUnderlineText(false);//去掉下划线
}
@Override
public void onClick(View view) {
//设置污女的点击事件
Log.e("=====","污女");
}
}, twoNameSize + 2, oneNameSize + twoNameSize + 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//内容的点击事件和样式
spannableInfo.setSpan(new ClickableSpan() {
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.parseColor("#FF151515"));//设置颜色
ds.setUnderlineText(false);//去掉下划线
}
@Override
public void onClick(View view) {
//设置内容的点击事件
Log.e("=====","内容");
}
}, oneNameSize + twoNameSize + 2, spannableInfo.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textview.setHighlightColor(Color.TRANSPARENT); //设置点击后的颜色为透明,否则会一直出现高亮
textview.append(spannableInfo);
textview.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件
更多好内容戳下面: