自定义ClickableSpan
/**
* 为富文本提供点击事件
*/
public class Clickable extends ClickableSpan implements View.OnClickListener {
private final View.OnClickListener mListener;
public Clickable(View.OnClickListener listener) {
mListener = listener;
}
@Override
public void onClick(View view) {
if(mListener!=null){
mListener.onClick(view);
}
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setUnderlineText(false);
ds.clearShadowLayer();
}
}
使用
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent Intent = new Intent(ACTION_DIAL, Uri.parse("tel:" + phoneNumber));//跳转到拨号界面,同时传递电话号码
startActivity(Intent);
}
};
//先设置点击,再设置颜色
span.setSpan(new Clickable(listener), source.length(), span.length(), SpannableString.SPAN_MARK_MARK);
span.setSpan(new ForegroundColorSpan(getContext().getResources().getColor(R.color.themColor)), source.length(), span.length(), SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
des.setText(span);
des.setMovementMethod(LinkMovementMethod.getInstance());//使点击生效
des.setHighlightColor(getContext().getResources().getColor(R.color.themColor));//设置点击时的高亮背景色