SpannableString之ClickableSpan笔记

TextView useInfo = (TextView) findViewById(R.id.info);
String url_text = "用户协议及隐私条款";
useInfo.setText("开始即表示您同意遵守");

SpannableString spStr = new SpannableString(url_text);

spStr.setSpan(new ClickableSpan() {
    @Override
    public void updateDrawState(TextPaint ds) {
        super.updateDrawState(ds);
        ds.setColor(Color.WHITE);       //设置文字颜色
        ds.setUnderlineText(true);      //设置下划线,默认有下划线
    }

    @Override
    public void onClick(View widget) {
        Log.d("", "onTextClick........");
    }
}, 0, url_text.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

//设置点击后的背景颜色为透明,否则会一直出现高亮(需要在代码里设置,xml里设置有时无效)
useInfo.setHighlightColor(Color.TRANSPARENT);
useInfo.append(spStr);
useInfo.setMovementMethod(LinkMovementMethod.getInstance());//开始响应点击事件

如果还需为文字设置点击的selector效果,可在xml中为该TextView添加属性:

android:textColorLink="@drawable/selector_textcolor"

在 setSpan() 时需要指定 flag,它是用来标识在 Span 范围内的文本前后输入新的字符时是否对它们也应用这个效果。分别有:

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE     (前后都不包括)

Spanned.SPAN_INCLUSIVE_EXCLUSIVE      (前面包括,后面不包括)

Spanned.SPAN_EXCLUSIVE_INCLUSIVE      (前面不包括,后面包括)

Spanned.SPAN_INCLUSIVE_INCLUSIVE       (前后都包括)

看个截图就更明白了: 


 
对比一下 
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值