布局文件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)点击事件的截取的更多相关文章

  1. Android Listview中Button按钮点击事件冲突解决办法

    今天做项目时,ListView中含有了Button组件,心里一早就知道肯定会有冲突,因为以前就遇到过,并解决过,可惜当时没有记录下来. 今天在做的时候,继续被这个问题郁闷了一把,后来解决后,赶紧来记录 ...

  2. Android TextView部分文字实现点击事件

    This is the class for text whose content and markup can both be changed. (这是一个内容和标记都可以更改的文本类) 快速实现 直 ...

  3. Android监听消息通知栏点击事件

    Android监听消息通知栏点击事件 使用BroadCastReceiver 1 新建一个NotificationClickReceiver 类,并且在清单文件中注册!! public class N ...

  4. robot framework程序运行过程中,遇到点击事件之后,未出现点击之后的效果(求解)

    1.click Element操作,在实际过程中偶然会出现,日志显示已点击成功,但是实际自动化页面,没有点击成功之后的操作 现象: 现象描述:程序执行到点击侧边栏的[人员信息]之后,日志显示已经点击成 ...

  5. Android TextView 中实现部分文字变色以及点击事件

    首先要想实现文字变色以及点击,都需要使用到SpannableStringBuilder,实例化该类也很简单,只需将你想要处理的字符串当做参数 SpannableStringBuilder spanna ...

  6. Android 响应webview中图片的点击事件

    最近碰到个新需求需要点击webview中的图片进行放大显示. 整理了下思路,想到了下面的一个可行的方案. 方案思路, 1.在点击图片的时候调用本地的java方法并给出响应的图片地址 2.本地获得图片地 ...

  7. Android TextView中实现点击文本超链接(无下划线)的封装类

    android中有的时候须要在TextView上设置一些超链接,点击这些超链接时进行一些操作.比如新浪微博上的一些keyword,点击时会跳转到对应的页面. 怎样实现我们就直接看源代码吧. /** * ...

  8. Android—— TextView文字链接4中方法

    转自:http://ghostfromheaven.iteye.com/blog/752181 Android 的实现TextView中文字链接的方式有很多种. 总结起来大概有4种: 1.当文字中出现 ...

  9. Android菜鸟成长记4-button点击事件

    Button 1.button按钮的创建 一般来说,在我们新建一个Android项目的时候,会有会默认有一个activity_main.xml的文件 如果你在新建项目的时候,把Create Activ ...

随机推荐

  1. Java中常见的排序方式-快速排序(升序)

    [基本思想] 快速排序在元素较多的情况下,排序效率是相当高的.其基本思想是这样: 假设数组为int[] arr = { 49, 38, 65, 97, 76, 13, 27, 22, 26, 41, ...

  2. 054 kafka内部机制

    一:数据格式与数据存储 1.总结 存储在磁盘文件中(index+log) 顺序读写的 基于offset偏移量来管理数据的(主要是读操作) 由分区器根据key值决定数据分布到哪个分区,默认使用hash ...

  3. LR两种录制模式的区别

    loadrunner的录制模式分为如下两种录制模式: HTML-based script,也称为高层录制: URL-based script,也称为底层录制. 两种录制模式的区别:1)脚本不同:高层录 ...

  4. LoadRunner脚本参数化之设置条件与运行结果说明

    性能测试中为什么需要进行参数化? 1.功能方面:首先要保证脚本的功能完善.可用性.(一般来说,参数化主要针对业务中的具备唯一性的数据.) 2.性能方面:一般来说,如果服务器存在缓存机制,在测试过程中, ...

  5. Python 豆瓣mv爬取

    爬取网址:https://www.dbmeinv.com/       豆瓣mv(现已更名) 注:自制力不好的同学,先去准备营养快线! import requests from bs4 import ...

  6. day12 函数的使用方法:初识迭代器和生成器

    生成器和迭代器比装饰器简单多了... 这是老师的博客地址: http://www.cnblogs.com/Eva-J/articles/7213953.html 前情回顾: #装饰器: # 在不修改一 ...

  7. scrapy response.xpath可以提取包含字符XX的标签

    1. 筛选属性包含某字符串的标签(如id = 'bigbaong'   查询包含'big'字符的就可以筛选到) res = response.xpath("//a[contains(@id, ...

  8. Fruit HDU - 2152 -上下界生成函数

    HDU - 2152 思路 :有上下界的生成函数 .生成函数即母函数,是组合数学中尤其是计数方面的一个重要理论和工具.生成函数有普通型生成函数和指数型生成函数两种, 其中普通型用的比较多.形式上说,普 ...

  9. Linux 默认目录

    /etc 存放系统管理所需要的配置文件和子目录 /home 一般用户的主目录 /usr 用户使用的系统目录和应用程序等信息 /bin  存放使用者经常使用的命令 如cp  ls cat 等 /proc ...

  10. 基于Ardalis.GuardClauses守卫组件的拓展

    在我们写程序的时候,经常会需要判断数据的是空值还是null值,基本上十个方法函数,八个要做这样的判断,因此我们很有必要拓展出来一个类来做监控,在这里我们使用一个简单地,可拓展的第三方组件:Ardali ...