android 富文本SpannableString去掉下划线

作者: android 发布时间: 2022-10-11 浏览: 2151 次 编辑

总有些细节设计总监总是揪着不放,做的app中有个textview牵扯到了url链接,但是老大的意思是不能存在下划线:

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
        String msg = "*注册即代表同意《用户协议》";
        SpannableString smp = new SpannableString(msg);
  
        ClickableSpan clickableSpan = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                startActivity(new Intent(UserRegisterActivity.this, UserProtocolActivity.class));
            }
  
            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setUnderlineText(false);
//                super.updateDrawState(ds);
            }
        } ;
  
        //设置点击
        smp.setSpan(clickableSpan, msg.indexOf("《") + 1, msg.lastIndexOf("》"), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //设置前景色
        smp.setSpan(new ForegroundColorSpan(Color.parseColor("#0AC3BC")), msg.indexOf("《"), msg.lastIndexOf("》") + 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        //设置tv
        tv_introduce.setText(smp);
        tv_introduce.setMovementMethod(LinkMovementMethod.getInstance());

主要是重写

updateDrawState(TextPaint tp)

方法,将setUnderLineText()设置为false即可。