TextView部分文字可以被点击的效果。TextView拼接图片,图片可以被点击

版权声明:本文为博主原创文章,未经博主允许不得转载。 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 

猜你喜欢

转载自blog.csdn.net/LXFX1108/article/details/84952391