自定义Android TextView超链接处理

在Android TextView中实现超链接点击跳转到WebView 在移动应用开发中,WebView组件是至关重要的,它允许开发者在应用内嵌入网页。这一章节将从WebView的基础知识入手,逐步深入探讨其在Android开发中的应用。WebView是一个系统组件,用于显示网页。它是基于WebKit引擎,可以渲染标准网页格式,如HTML、CSS和JavaScript。该组件在Android 4.4(KitKat)引入,支持在应用内浏览网页,而不必切换到外部浏览器。TextView是Android开发中最基础且广泛使用的UI组件之一,用于显示文本内容。 阅读详情

Android的TextView可以设置超链接,这些超链接都可以相应的跳转到对应的应用.!

例如,你如果设置了autoLink为Phone,那么你点击的时候就会到拨号的那个页面去! email和html超链接同理.


项目中本来有个客服电话是写在TextView里的,  同事给加了AutoLink为Phone.  但是项目中其他的地方(例如Dialog) 都是一点就直接打电话的. 那么此时我就想

能不能不用TextView自己的那一套玩意!    我首先想到继承TextView,  这个我后来看了下, 一是这里基于SDK开发并且木有源代码给我看, 而且工作量未知,所以放弃.

网上搜了一堆资料. 还是有启发.  用Spanable去对TextView进行一些设置, 让他处理我自己定义的东东!

SDK里面关于Spanable的API描述的太少了!   借着网上的资料和摸索, 把功能实现了.

1: 获得TextView

这个就findViewById获取就可以了

2: 创建SpannableString

构造方法里面要接收一个源字符串(String source), 那么大家要注意了, 这个字符串是会全部显示在TextView中的.

例如我这里的源字符串是:  客服电话:400-xxx-xxxx

3:给SpannableString设置超链接

spString.setSpan(new YURLSpan("tel:400xxxxxxx"), 5, spString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

这里面第一个参数是  Span的类型, 我这里就写一个UrlSpan, 跟源码得知,其实文字的链接属性只需要给一个ClickableSpan就可以了

第二个参数的意思是  超链接的部分从源字符串中开始的索引,  第三个参数是超链接的部分从源字符串中结束的索引.  第四个参数是flag, 有兴趣的自己去研究下

4: 让超链接可点

textView.setMovementMethod(LinkMovementMethod.getInstance());

一定要设置这个, 不设置超链接无法点击

5: 设置TextView的文字

textView.setText(spString);
6:创建ClickableSpan的实现类,并重写onClick方法

private class YURLSpan extends URLSpan {
		public YURLSpan(String url) {
			super(url);
		}
		public void onClick(View widget) {
			String url = getURL();
			Intent intent = new Intent(
					Intent.ACTION_CALL, Uri
							.parse(url));
			startActivity(intent);
		}
		
	}

这里我就直接继承的URLSpan.   如果大家继承ClickableSpan的话, 在构造方法中把url赋给成员变量就可以了.


补充一点, 如果需要设置超链接为无下划线的话, 需要重写ClickableSpan的updateDrawState方法

public void updateDrawState(TextPaint ds) {
			super.updateDrawState(ds);
			ds.setUnderlineText(false);
		}





此方法还适用于自定义超链接启服务或者是跳转Activity..

MIKE水动力笔记2_水动力基础理论知识 本文所讲内容是水动力基础理论知识,所参考的主要书籍是《水动力学和水质》(第二版,季振刚著,海洋出版社)。 阅读详情

相关推荐

Sentence-BERT 语义相似度双塔模型

论文介绍 发表:2019,EMNLP 论文题目:《Sentence-BERT:sentence embeddings using siaese BERT-networks》 论文地址:https://arxiv.org/abs/1908.10084 Github:https://github.com/UKPLab/sentence-transformers 适用领域: 句向量生成 语义相似度计算 语义搜索 无监督任务(聚类) 1 概述 在20年之前的各种预训练模型中,比如bert,XLNet,Alb

weiyaner的博客 9193

android textView 超链接无效

1、如果String文件中设置了例如: textView的text设置

FENGFENG444333的专栏 1915

【PyTorch版本兼容性指南】如何在不同版本中正确使用torch.nn.attention

本文详细解析了PyTorch版本兼容性问题,特别是torch.nn.attention模块在不同版本中的使用差异。针对常见的ModuleNotFoundError错误,提供了三种实用解决方案:升级PyTorch版本、使用自定义实现和源码移植方案,并分享了最佳实践建议,帮助开发者有效避免兼容性问题。

weixin_29084231的博客 472

Linkify介绍

Linkify是一个辅助类,通过RegEx样式匹配,自动地在TextView类(和继承的类)中创建超链接。 符合特定的RegEx样式的文本会被转变成可点击的超链接,这些超链接隐式地调用startActivity(new Intent(Intent.ACTION_VIEW, uri)),符合的文本会作为目标URI。 你可以指定任意的字符串样式为链接;方便地,Lin...

de14141983的专栏 367

芯片设计中的STA实战:如何避免时序违例(含常见问题解析)

本文深入探讨了芯片设计中静态时序分析(STA)的实战应用,重点解析了如何避免时序违例。文章从STA的核心逻辑与约束制定出发,强调了将时序意识植入RTL编码与综合阶段的重要性,并详细介绍了后端物理实现中的时序收敛策略。同时,针对跨时钟域路径误报、多工艺角违例等常见问题提供了深度解析与调试技巧,旨在帮助IC设计工程师系统性地掌握时序分析与优化方法。

open4的博客 513

STM32 HAL库 实现基于SPI模式的SD卡、TF卡FATS文件系统+模拟U盘的应用笔记

很多单片机不带SDIO接口,所以在使用SD卡时必须使用SPI模式进行读写。 想做一个基于SPI的SD卡文件系统读写SD卡上的文件,再配合USB接口做一个模拟U盘。只能利用业余时间慢慢更新,也不知道能不能坚持下去。 我会把从零开始开发一个程序需要经历的过程一一的记录下来。做成一个奶妈级的单片机开发笔记。 一、硬件简介 1.SD卡和MicroSD卡(TF卡)的区别 由下图可以很容易的看出TF卡只是比SD卡少了一个3脚Vss脚,其它的管脚顺序

KyleKuang的博客 8334

android 自定义超链接,Android如何通过TextView实现超链接的跳转

前段时间在开发群里看到有人问android的TextView该如何自定义超链接的跳转,如:有字符串“使用该软件,即表示您同意该软件的使用条款和隐私政策”,现希望当点击“使用条款”或“隐私政策”时可以跳转到相应的说明页面,我还记得当时有一大堆人在讨论然后提了一大堆的方法,比如:用多个TextView组合,给相应的TextView添加点击事件、给TextView添加autoLink属性、通过给相应的内...

weixin_35750747的博客 1473

【毕设实战】基于YOLOv8的HRSC2016船舶智能检测系统开发全指南(含可视化UI界面,打造海事领域高分毕设)

亲爱的同学,通过这篇教程,你已经掌握了“基于YOLOv8的HRSC2016微小船只检测系统”从数据集处理、模型训练到Tkinter界面开发的全流程。这个课题既贴合“海事智能化”的产业战略,又涵盖了“目标检测、深度学习、界面开发”等多个毕设评分点,非常适合作为计算机或海事工程专业的毕业设计。在实践中,你可能会遇到“海面背景复杂导致船只漏检”“微小船只识别精度不足”“UI与模型推理同步卡顿”等挑战——别担心,这些都是技术成长的必经之路。

know_F0727的博客 130

Android自定义超链接TextView

在Android中查找链接非常简单,您可能听说过Linkify ,这是一个很棒的类,其中有许多静态方法可以完成简单的工作,但问题是在Linkify中您无法指定单击链接时所需的行为最重要的是,Linkify所做的只是根据您提供的“模式”查找链接,并添加“方案”字符串以完成URL,并创建了用于启动浏览器的Android目的。 Linkify行为不能被覆盖,因为Linkify类中的所有方法都是s...

344

vue3:实现ECharts3D地图详细示例,echarts实现3D地图map3D,vue3如何利用echarts绘制3d地图立体城市省市地区分布,可视化数据大屏3D炫酷中国地图(复制源码,开箱即用)

echarts实现中国地图记录篇之3D地图,Echarts地图之——如何让地图显示出3d感,【3d地图】vue中使用echarts geo3D,echarts实现某个市3D地图展示,vue3中使用echarts实现中国地图,3D地图图表,echarts实现3D地图——map3D,数据大屏3d地图,vue3+echarts绘制中国地图,3D地图,省、市、县,【3d地图】vue3中使用echarts geo3D,echarts实现某个市3D地图展示,ECharts3D地图(详细示例——附有具体注释),echar

✅ 精选推荐文章 3669

科研——BIBM论文修改和提交

BIBM的相关操作流程汇总

Blackoutdragon的博客 6688

Android在文本中实现超链接

1、自动链接实现 实现方式:在 .xml 文件中使用android:autoLink属性 该属性的值有: none:不匹配任何格式(默认值) web:只匹配网址,网址会以超链接的形式显示 email:只匹配电子邮箱,电子邮箱会以超链接的形式显示 phone:只匹配电话号码,电话号码会以超链接的形式显示 map:只匹配地图地址,地理位置会以超链接的形式显示 all:匹配以上所有 2、Html.fromHtml() + setMovementMethod() 实现 示例: 首先在 .xml 文件中实

继续学习...... 2789

拿下华为性格测试!

华为性格测试指南

weixin_41171614的博客 5271

Android自定义TextView中的超链接点击事件处理

package com.TextHtml; import android.app.Activity; import android.content.Context; import android.os.Bundle; import android.text.Html; import android.text.Spannable; import android.text.SpannableStrin

xujinbing的专栏 668

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

android 超链接事件,Android自定义TextView中的超链接点击事件处理

引用自:http://blog.youkuaiyun.com/zhaowei1001/article/details/6286852package com.example.test;import android.app.Activity;import android.content.Context;import android.os.Bundle;import android.text.Html;import...

weixin_28725959的博客 409

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

android TextView中超链接的事件捕捉(textview上LINK的点击事件)

package com.cm;      import java.util.ArrayList;      import android.R.color;   import android.app.Activity;   import android.content.Context;   import android.graphics.Color;   import android

fuxiaoyuqing的专栏 672

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android TextView显示表情、标签、超链接

Android TextView显示表情图片、标签、超链接因为项目需求,要在用户发布动态的时候可以打上标签,超链接,还有图片标签,本来不打算写这篇博客,在查阅资料的时候我发现网上的博客都是类似的,大家你抄我,我抄你,抄来抄去,这就是所谓的拿来主义吧,盗版在国内太过泛滥,不多说,切入正题,先来看下我们今天研究的效果图 我研究了下微博和QQ的动态,发现他们的内容描述都有一个共同点——用html写的

diy_coder 5187

转:android TextView中超链接的事件捕捉(textview上LINK的点击事件)

package com.cm; import java.util.ArrayList; import android.R.color; import android.app.Activity; import android.content.Context; import android.graphics.Color; import andr...

jianjia1988的博客 112

android 超链接事件,Android实现捕获TextView超链接的方法

本文实例讲述了Android实现捕获TextView超链接的方法。分享给大家供大家参考,具体如下:这里分享一篇捕获TextView超链接的文章,希望对大家有所帮助,我终于在歪路上回归正途了。这个捕获TextView超链接应该算是比较常用吧,如果你会了,就不用看了,如果还不会,可以看一眼,非常简单。捕获TextView超链接这个意思就是在一段文字当中如果有超链接的网址在当中,在TextView中会特...

weixin_35698059的博客 328

Android自定义TextView链接点击和长按事件

Android自定义TextView链接点击和长按事件标签(空格分隔): Android由于有个需求,就是点文本中超链接(电话,网址email等)直接跳转,长按弹出菜单menu;由于API只提供了超链接点击事件,没有提供长按事件,于是自己自定义一个; 项目下载地址: http://download.youkuaiyun.com/detail/fenggit/9071305 package com.examp

Android Daily 4892

android TextView中ClickableSpan与文本自由复制(TextIsSelectable)冲突问题

上一篇文章解决了UrlSpan与文本中url链接识别和设置的问题,超链接可以正常显示了。但由于用户期望TextView中的文章内容可以自由复制,这个需求嘛实现起来就是设置下textView.setTextIsSelectable(true)就可以了。 天真的以为没啥问题,版本转测。立马出现一个严重问题,第一次点击超链接打开的网址与实际不符,第二次点击超链接才能打开正确的网址,或者说每次点击超链接

saroll57的专栏 5462

android clickablespan超链接 点击时改变背景色,Android学习——ClickableSpan点击链接事件 改超链接颜色...

private SpannableStringBuilder dealWeiboContent(String weiboContent,TextView textView) {Pattern pattern = Pattern.compile("((http://|https://){1}[\\w\\.\\-/:]+)|(#(.+?)#)|(@[\\u4e00-\\u9fa5\\w\\-]+)")...

weixin_30280267的博客 2201
上一篇: adb上使用cp命令的替代方法(failed on '***' - Cross-device link解决方法)
下一篇: 重复弹Toast的解决方案
izard999
博客等级 码龄18年 375粉丝 98原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值