美文网首页Android
SpannableString之ClickableSpan

SpannableString之ClickableSpan

作者: 12313凯皇 | 来源:发表于2019-02-25 14:58 被阅读15次

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

    相关文章

      网友评论

        本文标题:SpannableString之ClickableSpan

        本文链接:https://www.haomeiwen.com/subject/evhgyqtx.html