布局文件xml

1 <TextView2                 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代码里,对链接的事件进行监听。

package com.jayce.testlink;  import android.net.Uri; import android.os.Bundle; import android.app.Activity; import android.content.Intent; import android.text.Spannable; import android.text.SpannableStringBuilder; import android.text.style.ClickableSpan; import android.text.style.URLSpan; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.TextView;  public class TextLinkActivity extends Activity {      @Override     public void onCreate(Bundle savedInstanceState) {         super.onCreate(savedInstanceState);         setContentView(R.layout.activity_text_link);         TextView tv = (TextView)findViewById(R.id.test_note);         CharSequence text = tv.getText();          /*          * 以下是textview的内容(这里给了3个示例链接和一个普通字符串)          * 13888888888          * www.google.com          * test@gmail.com          * jaycetest          */         if (text instanceof Spannable) {               int end = text.length();             Spannable sp = (Spannable) tv.getText();               URLSpan[] spans = sp.getSpans(0, end, URLSpan.class);               SpannableStringBuilder style = new SpannableStringBuilder(text);               style.clearSpans();// should clear old spans               for (URLSpan span : spans) {                   JayceSpan mySpan = new JayceSpan(span.getURL());                   style.setSpan(mySpan, sp.getSpanStart(span), sp.getSpanEnd(span), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);               }               tv.setText(style);          }         tv.setOnClickListener(new OnClickListener(){              @Override             public void onClick(View v) {                 // TODO Auto-generated method stub                 /*                  * 这里是对所有点击消息的监听                  * 可以把链接的做标记剔除后监听非链接的点击                  * 比如jaycetest区域的点击                  */             }});     }          private  class JayceSpan extends ClickableSpan {                      private String mSpan;              JayceSpan(String span) {               mSpan = span;           }              @Override           public void onClick(View widget) {               Log.e("jayce", "span:" + mSpan);             /*链接被点击              * 这里可以做一些自己定义的操作              */             Intent intent = new Intent(Intent.ACTION_VIEW);             intent.setData(Uri.parse(mSpan));             startActivity(intent);         }       }    }

更多相关文章

  1. android广播监听短信并显示内容
  2. Android传感器
  3. Android(安卓)ExpandableListView同时显示多种不同类型字列表
  4. Android中ListView以及数组适配器(ArrayAdapter)的使用
  5. Android原生和H5交互;Android和H5混合开发;WebView点击H5界面跳转
  6. 监听Android应用程序是否卸载成功
  7. [置顶] Android(安卓)百度地图 简单实现--- 美食搜索
  8. button selector 样式
  9. android 瀑布流简单例子

随机推荐

  1. 如何构建将被输入下拉框的数据?
  2. 使用navicat for mysql 将查询语句过滤的
  3. 如何生成字符串'a'..'zzz'然后将它们保存
  4. 我不能使用PHP和SQL在循环之间传递变量?
  5. 不正确的字符串值:'\xF0\x9F\ xB6\xF
  6. SQL Server调优系列进阶篇(查询语句运行几
  7. SQL基本操作 - 新增、查看、更新、删除表
  8. PostgreSQL数据库学习手册之libpq - C 库
  9. 外部主机不允许连接Mysql设置的解决方法
  10. MySQL JOIN 多表连接