Android TextView中链接(link)点击事件的截取
布局文件xml
1 <TextView
2 android:layout_width="match_parent"3 android:layout_height="match_parent"4 android:id="@+id/test_note"5 android:autoLink="all"6 />
这里autoLink="all"就是链接所有类型的,包括网址,电话,邮件地址什么的。
Java代码里,对链接的事件进行监听。
1 package com.jayce.testlink;
2
3 import android.net.Uri;
4 import android.os.Bundle;
5 import android.app.Activity;
6 import android.content.Intent;
7 import android.text.Spannable;
8 import android.text.SpannableStringBuilder;
9 import android.text.style.ClickableSpan;
10 import android.text.style.URLSpan;
11 import android.util.Log;
12 import android.view.View;
13 import android.view.View.OnClickListener;
14 import android.widget.TextView;
15
16 public class TextLinkActivity extends Activity {
17
18 @Override
19 public void onCreate(Bundle savedInstanceState) {
20 super.onCreate(savedInstanceState);
21 setContentView(R.layout.activity_text_link);
22 TextView tv = (TextView)findViewById(R.id.test_note);
23 CharSequence text = tv.getText();
24 /*
25 * 以下是textview的内容(这里给了3个示例链接和一个普通字符串)
26 * 13888888888
27 * www.google.com
28 * test@gmail.com
29 * jaycetest
30 */
31 if (text instanceof Spannable) {
32 int end = text.length();
33 Spannable sp = (Spannable) tv.getText();
34 URLSpan[] spans = sp.getSpans(0, end, URLSpan.class);
35 SpannableStringBuilder style = new SpannableStringBuilder(text);
36 style.clearSpans();// should clear old spans
37 for (URLSpan span : spans) {
38 JayceSpan mySpan = new JayceSpan(span.getURL());
39 style.setSpan(mySpan, sp.getSpanStart(span), sp.getSpanEnd(span), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
40 }
41 tv.setText(style);
42 }
43 tv.setOnClickListener(new OnClickListener(){
44
45 @Override
46 public void onClick(View v) {
47 // TODO Auto-generated method stub48 /*
49 * 这里是对所有点击消息的监听
50 * 可以把链接的做标记剔除后监听非链接的点击
51 * 比如jaycetest区域的点击
52 */
53 }});
54 }
55
56 private class JayceSpan extends ClickableSpan {
57
58 private String mSpan;
59
60 JayceSpan(String span) {
61 mSpan = span;
62 }
63
64 @Override
65 public void onClick(View widget) {
66 Log.e("jayce", "span:" + mSpan);
67 /*链接被点击
68 * 这里可以做一些自己定义的操作
69 */
70 Intent intent = new Intent(Intent.ACTION_VIEW);
71 intent.setData(Uri.parse(mSpan));
72 startActivity(intent);
73 }
74 }
75
76 }
Android TextView中链接(link)点击事件的截取的更多相关文章
- Android Listview中Button按钮点击事件冲突解决办法
今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...
- Android TextView部分文字实现点击事件
This is the class for text whose content and markup can both be changed. (这是一个内容和标记都可以更改的文本类) 快速实现 直 ...
- Android监听消息通知栏点击事件
Android监听消息通知栏点击事件 使用BroadCastReceiver 1 新建一个NotificationClickReceiver 类,并且在清单文件中注册!! public class N ...
- robot framework程序运行过程中,遇到点击事件之后,未出现点击之后的效果(求解)
1.click Element操作,在实际过程中偶然会出现,日志显示已点击成功,但是实际自动化页面,没有点击成功之后的操作 现象: 现象描述:程序执行到点击侧边栏的[人员信息]之后,日志显示已经点击成 ...
- Android TextView 中实现部分文字变色以及点击事件
首先要想实现文字变色以及点击,都需要使用到SpannableStringBuilder,实例化该类也很简单,只需将你想要处理的字符串当做参数 SpannableStringBuilder spanna ...
- Android 响应webview中图片的点击事件
最近碰到个新需求需要点击webview中的图片进行放大显示. 整理了下思路,想到了下面的一个可行的方案. 方案思路, 1.在点击图片的时候调用本地的java方法并给出响应的图片地址 2.本地获得图片地 ...
- Android TextView中实现点击文本超链接(无下划线)的封装类
android中有的时候须要在TextView上设置一些超链接,点击这些超链接时进行一些操作.比如新浪微博上的一些keyword,点击时会跳转到对应的页面. 怎样实现我们就直接看源代码吧. /** * ...
- Android—— TextView文字链接4中方法
转自:http://ghostfromheaven.iteye.com/blog/752181 Android 的实现TextView中文字链接的方式有很多种. 总结起来大概有4种: 1.当文字中出现 ...
- Android菜鸟成长记4-button点击事件
Button 1.button按钮的创建 一般来说,在我们新建一个Android项目的时候,会有会默认有一个activity_main.xml的文件 如果你在新建项目的时候,把Create Activ ...
随机推荐
- Java中常见的排序方式-选择排序(升序)
[基本思想] 假设数组为int[] a = { 49, 38, 65, 97, 76, 13, 27 },数组元素个数为7个. 第1轮比较:先是a[0]与a[1]比较,大于则先交换,再比较a[0]和a ...
- mysql 备份 恢复
mysqldump -h127.0.0.1 -uroot -p123456 --databases dbname > e:/mysqlbak/dbname.dump不用新建数据库mysql -h ...
- .netcore加入APM系统 SkyWalking
安装环境:windows 2016 必要条件: JDK8+ Elasticsearch 5.x(注:目前不支持es6) 8080,10800,11800,12800 端口不被占用 下载skywalki ...
- python系统性能模块笔记
内存信息psutil.cpu_times() 使用cpu_times方法获取cpu完整信息,需要显示所有逻辑cpu信息(指定变量percpu=True)psutil.cpu_ti ...
- 001.Oracle安装部署-本地文件系统
一 环境准备 安装包:linux.x64_11gR2_database_1of2.zip linux.x64_11gR2_database_2of2.zip 二 安装Oracle准备 2.1 用户名/ ...
- SpringBoot学习历程
新年新气象,更新了一下本人所有写的关于SpringBoot的文章目录,感谢大家长期以来的支持,在接下来的日子还会不定期的进行更新. 入门 使用IntelliJ Idea新建SpringBoot项目 S ...
- SPOJ.104.Highways([模板]Matrix Tree定理 生成树计数)
题目链接 \(Description\) 一个国家有1~n座城市,其中一些城市之间可以修建高速公路(无自环和重边). 求有多少种方案,选择修建一些高速公路,组成一个交通网络,使得任意两座城市之间恰好只 ...
- [CC-COUPLES]Couples sit next to each other
[CC-COUPLES]Couples sit next to each other 题目大意: 有\(n(n\le5\times10^5)\)对小伙伴共\(2n\)个人坐成一圈.刚开始编号为\(i\ ...
- 考前停课集训 Day4 雷
Day 4 今天Rating掉了两百多 为什么呢 因为是真实力打的 倒数第三 没什么好说的了 这才是我的真实水平 强的人一如既往强 作弊的人一落千丈. 只有我.是的,只有我. 被老师嘲讽了,哎,您真的 ...
- C++程序设计方法3:自动类型转换
方法1:在源类中定义目标类型转换运算符 #include <iostream> using namespace std; class Dst { public: Dst() { cout ...