版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/LXFX1108/article/details/84952391
今有一需求,就是列表标题后拼接图标,点击图标跳转一个web页;
这里简单做下笔记,以供需要的人参考:
//设置部分文字点击事件
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(context, "触发点击事件!", Toast.LENGTH_SHORT).show();
if(widget instanceof TextView) {
//解决点击之后,文字背景变为绿色的问题
((TextView)widget).setHighlightColor(context.getResources().getColor(android.R.color.transparent));
}
}
};
//标题名称
String mTiteStr = special.getName();
mTiteStr = !Utils.isNullStr(mTiteStr) ? mTiteStr : "";
int mTitleLength = mTiteStr.length();
//获取一张图片
Drawable drawable = ContextCompat.getDrawable(holder.tv_name.getContext(), R.drawable.zhou_icon);
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
CenterAlignImageSpan span = new CenterAlignImageSpan(drawable);
SpannableString spanStr = new SpannableString(mTiteStr + " "); // 这里没有使用 \u300,空格太大
//设置图标
spanStr.setSpan(span, mTitleLength + 1, mTitleLength + 2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
//添加事件
spanStr.setSpan(clickableSpan, mTitleLength + 1, mTitleLength + 2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//这个方法无比加上,否则点击事件不响应
holder.tv_name.setMovementMethod(LinkMovementMethod.getInstance());
//设置文本内容
holder.tv_name.setText(spanStr);
另外,文字的图标有点击事件,但是文字的其他部分失去了事件的问题:
解决方案请参考:https://blog.csdn.net/wjr1949/article/details/76085095
有疑问可以联系我,微:lanjixingxun