打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
TextView中实现可点击链接的显示

TextView中实现可点击链接的显示



  开发的过程中会有这么一个需求:在一段话中包含有若干个链接,程序能识别出链接并突出显示,不能有下划线,用指定颜色,点击后打开webview并跳转到该网页


  主要包括以下几个内容:


  1、识别链接url,用正则表达式做。


  2、突出显示,继承重写ClickableSpan


  3、跳转需重写ClickableSpan里面的onClick事件


ClickableSpan重写如下:



class NoLineClickSpan extends ClickableSpan {        String text;        public NoLineClickSpan(String text) {            super();            this.text = text;        }        @Override        public void updateDrawState(TextPaint ds) {            ds.setColor(Color.parseColor("#ffffff"));//指定颜色值            ds.setUnderlineText(false); // 去掉下划线        }        @Override        public void onClick(View widget) {            // 点击超链接时调用            final Bundle bundle = new Bundle();            bundle.putString("URL", text);            Intent intent =//指定的跳转事件            mContext.startActivity(intent);        }    }


  在设置TextView之前需要对内容进行处理,将链接替换成为ClickableSpan,再设置为TextView的text。


  首先是匹配url的正则表达式:



Pattern pattern = Pattern.compile("[http|https]+[://]+[0-9A-Za-z:/[-]_#[?][=][.]]*", Pattern.CASE_INSENSITIVE);Matcher m = pattern.matcher(string);


  然后是找出所有的url,并设置ClickableSpan替换



int startPoint = 0;while (m.find(startPoint)) {    int endPoint = m.end();    String hit = m.group();    ClickableSpan clickSpan = new NoLineClickSpan(hit);    sps.setSpan(clickSpan, endPoint - hit.length(), endPoint, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//用Span替换对应长度的url    startPoint = endPoint;}textView.setText(sps);


  其中sps为用String初始化的SpannableString对象。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
! android应用——装逼神器《微博尾》
Android BLE4.0通信之计步、体重、血压
带有自动提醒功能的记事本,实现开机自启动、进程常驻
android – 在tabs开关中保存片段状态
android开发我的新浪微博客户端-阅读微博功能篇(6.2)
Android并发线程Handler后台线程开发总结
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服