TextView使用ClickableSpan点击空白处也响应点击事件

1、ClickableSpan的使用

        下面方法给字符串中数字添加点击事件:

private SpannableString spannableText(String text){
        if(TextUtils.isEmpty(text)){
            return SpannableString.valueOf("");
        }
        Pattern p = Pattern.compile("(120)|(110)|(119)|(122)|(114)|(121)|(999)|([0-9]{5,13})");
        Matcher m = p.matcher(text);
        SpannableString temp = new SpannableString(text);
        int textColor = getResources().getColor(R.color.colorTheme);
        while (m.find()){
            int start = m.start();
            int end = m.end();
            String tel = m.group();
            ForegroundColorSpan colorSpan = new ForegroundColorSpan(textColor);
            temp.setSpan(colorSpan,start,end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
            ClickableSpan clickableSpan = new ClickableSpan() {
                @Override
                public void onClick(@NonNull View widget) {
                    dialPhone(tel);
                }

                @Override
                public void updateDrawState(@NonNull TextPaint ds) {
                    ds.setUnderlineText(true);
                }
            };
            temp.setSpan(clickableSpan,start,end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        }
        return temp;
    }

2、问题

例如,字符串是“姓名:张三\r\n电话:11111111111\r\n性别:男\r\n亲属电话:22222222222”。

问题:使用上面方法添加点击事件后,会发现点击数字后的空白地方,也会执行点击事件。

解决方法:在可能出现空白区域的字符串后添加一个空格字符“\u3000”,即可解决问题。

例如,上面字符串修改后即是:“姓名:张三\r\n电话:11111111111\u3000\r\n性别:男\r\n亲属电话:22222222222\u3000”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值