博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TextView中实现可点击链接的显示
阅读量:6801 次
发布时间:2019-06-26

本文共 1483 字,大约阅读时间需要 4 分钟。

  开发的过程中会有这么一个需求:在一段话中包含有若干个链接,程序能识别出链接并突出显示,不能有下划线,用指定颜色,点击后打开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对象。

转载于:https://www.cnblogs.com/txlbupt/p/3465847.html

你可能感兴趣的文章
hdu 3501(欧拉函数引申)
查看>>
django-request获取数据
查看>>
python的eval、exec函数使用总结
查看>>
js解析与序列化json数据(一)
查看>>
struts2 里面OpenSessionInViewFilter(转)
查看>>
Oracle升级前备份和失败回退
查看>>
linux常用服务部署
查看>>
RabbitMQ基础总结
查看>>
java获取properties配置文件中某个属性最简单方法
查看>>
POJ1321 棋盘问题
查看>>
5/27 C语言 指针系列
查看>>
SSL协议握手过程
查看>>
博客阅读和思考
查看>>
学习笔记之PostgreSQL / pgAdmin / Psycopg / PostGIS
查看>>
Linux Timer定时器【转】
查看>>
java设计模式-工厂方法模式
查看>>
SAP RFC通信模式
查看>>
基于jQuery+JSON的省市联动效果
查看>>
jquery实现点击显示,再一次点击隐藏
查看>>
NABCD构建APP
查看>>