SpannableString之ClickableSpan

记录一下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使用

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容