古人学问无遗力,少壮工夫老始成。这篇文章主要讲述Android TextView中链接(link)点击事件的截取相关的知识,希望能为你提供帮助。
布局文件xml
1 < TextView 2android:layout_width="match_parent"3android:layout_height="match_parent"4android:id="@+id/test_note"5android:autoLink="all"6/>
这里autoLink="all"就是链接所有类型的,包括网址,电话,邮件地址什么的。
【Android TextView中链接(link)点击事件的截取】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 19public void onCreate(Bundle savedInstanceState) { 20super.onCreate(savedInstanceState); 21setContentView(R.layout.activity_text_link); 22TextView tv = (TextView)findViewById(R.id.test_note); 23CharSequence text = tv.getText(); 24/*
25* 以下是textview的内容(这里给了3个示例链接和一个普通字符串) 26* 13888888888 27* www.google.com 28* test@gmail.com 29* jaycetest 30*/
31if (text instanceof Spannable) { 32int end = text.length(); 33Spannable sp = (Spannable) tv.getText(); 34URLSpan[] spans = sp.getSpans(0, end, URLSpan.class); 35SpannableStringBuilder style = new SpannableStringBuilder(text); 36style.clearSpans(); // should clear old spans
37for (URLSpan span : spans) { 38JayceSpan mySpan = new JayceSpan(span.getURL()); 39style.setSpan(mySpan, sp.getSpanStart(span), sp.getSpanEnd(span), Spannable.SPAN_EXCLUSIVE_INCLUSIVE); 40} 41tv.setText(style); 42} 43tv.setOnClickListener(new OnClickListener(){ 44
45@Override 46public void onClick(View v) { 47// TODO Auto-generated method stub48/*
49* 这里是对所有点击消息的监听 50* 可以把链接的做标记剔除后监听非链接的点击 51* 比如jaycetest区域的点击 52*/
53}});
54} 55
56privateclass JayceSpan extends ClickableSpan { 57
58private String mSpan; 59
60JayceSpan(String span) { 61mSpan = span; 62} 63
64@Override 65public void onClick(View widget) { 66Log.e("jayce", "span:" + mSpan); 67/*链接被点击 68* 这里可以做一些自己定义的操作 69*/
70Intent intent = new Intent(Intent.ACTION_VIEW); 71intent.setData(Uri.parse(mSpan)); 72startActivity(intent); 73} 74} 75
76 }
来源: http://www.cnblogs.com/jayceli/archive/2012/09/03/2669475.html
来自为知笔记(Wiz)
推荐阅读
- Android 中图能够用到的图片处理类BitmapUtils
- android 6 权限检查 zxing
- Android Studio 导出APK
- react-native 0.31.0 低版本在Android上报网络的错误错
- 微信小程序和App的UI设计有什么异同吗()
- 11种适合小型企业的最佳电子商务网站构建工具 [免费和付费]
- 10款最佳珠宝设计软件(适合初学者和专业人士)
- 14款最佳免费游戏制作软件(无编码设计游戏)
- 移动开发必备的15个最佳免费线框工具合集