解析带有超链和电话号码的字符串,并标记超链添加点击事件
来源:互联网 发布:java 代码混淆 编辑:程序博客网 时间:2024/05/16 18:59
在做消息推送的时候,接口会返回一条带有超链的字符串,要求能够解析出里面的链接地址..以及手机号…并且蓝色字体,,下划线,,在点击链接地址时需要做自己的一些操作
废话不多说,,直接上代码:
public class SaHyperlinkStyleEditUtils { private boolean isShowUnderLine = true; private int color = -1; //用来设置监听事件,单击链接做自己的操作 private OnLinkClickListener onLinkClickListener; public void setColor(int color) { this.color = color; } /** * 下划线显隐 */ public void setIsShowUnderLine(boolean isShowUnderLine) { this.isShowUnderLine = isShowUnderLine; } public void setUrl(TextView tv, String htmlLinkText, OnLinkClickListener onLinkClickListener) { this.onLinkClickListener = onLinkClickListener; //html 不识别\n 换行 所以得转换为<br> htmlLinkText = htmlLinkText.replace("\n", "<br>"); // \t在与() 相遇是不识别,不知道什么鬼..所以加上空格替换,懂得可以说明下 htmlLinkText = htmlLinkText.replace("\t", " \t"); //string转化为html tv.setText(Html.fromHtml(htmlLinkText)); //这句不加上不会生效 tv.setMovementMethod(LinkMovementMethod.getInstance()); CharSequence text = tv.getText(); if (text instanceof Spannable) { int end = text.length(); Spannable sp = (Spannable) tv.getText(); URLSpan[] urls = sp.getSpans(0, end, URLSpan.class); SpannableStringBuilder style = new SpannableStringBuilder(text); style.clearSpans();// should clear old spans for (URLSpan url : urls) { MyURLSpan myURLSpan = new MyURLSpan(url.getURL()); style.setSpan(myURLSpan, sp.getSpanStart(url), sp.getSpanEnd(url), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); } tv.setText(style); } } private class MyURLSpan extends ClickableSpan { private String mUrl; MyURLSpan(String url) { mUrl = url; } @Override public void onClick(View widget) { if (onLinkClickListener != null) { onLinkClickListener.onLinkClickListener(widget, mUrl); } } /** * 修改样式 * * @param ds */ @Override public void updateDrawState(TextPaint ds) { if (color == -1) { //默认色 ds.setColor(ds.linkColor); } else { //自定义样式 ds.setColor(color); } //下划线显示或隐藏 true 显示 false 隐藏 ds.setUnderlineText(isShowUnderLine); } } /** * 点击链接事件的监听 */ public interface OnLinkClickListener { void onLinkClickListener(View view, String url); }}
阅读全文
0 0
- 解析带有超链和电话号码的字符串,并标记超链添加点击事件
- 将字符串中的电话号码标记并添加点击事件(SpannableString)
- 腾讯地图的使用,添加多个标记和点击事件
- 超链分析和PageRank
- 【iOS开发】如何给字符串添加超连接(响应事件)
- 【iOS开发】如何给字符串添加超连接(响应事件)
- 超链的简单设置
- ram空间超的解析
- 超详细的系统时钟和定时器原理解析
- 在SHTML中通过JS调用APSX完成超联接的点击事件
- 自动点击webbrowser 里的超连接
- RecyclerView 添加头部和尾部,并实现Item的点击事件
- RecyclerView 添加头部和尾部,并实现Item的点击事件
- 开发中遇到的问题-动态创建按钮并且添加带有参数的点击事件
- 利用popupwindow生成带有列表的对话框,并设置对话框列表的点击事件
- iOS开发封装带有Button的UIView控件,使用block给button添加点击事件
- iOS开发封装带有Button的UIView控件,使用代理给button添加点击事件
- RecycleView的使用,并添加子item的点击事件
- 简单的购物车实现 +多选框
- java生成红包的简单算法
- 做毕设(十二)——JPA条件分页之翻页
- 进程和线程
- TortoiseGit 连接Git服务器不用每次输入用户名和密码的方法
- 解析带有超链和电话号码的字符串,并标记超链添加点击事件
- 清除缓存
- ngFor中使用ngModel
- 模糊查询
- 服务$http/$interval/$timeout
- Android 获取cache缓存的目录路径的方法
- 【python图像处理】python绘制极坐标图
- JDK,JRE,JVM区别与联系
- 步进电机和伺服电机的区别