Android

SpannableString之ClickableSpan

2019-02-25  本文已影响15人  12313凯皇

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

上一篇下一篇

猜你喜欢

热点阅读