关注微信号:javalearns 随时随地学Java

或扫一扫

随时随地学Java

Android中的TTextView很强大,我们可以不仅可以设置纯文本为其内容,还可以设置包含网址和电子邮件地址的内容,并且使得这些点击可以点击。但是我们可以捕获并控制这些链接的点击事件么,当然是可以的。

本文将一个超级简单的例子介绍一下如何实现在Android TextView 捕获链接的点击事件。

关键实现

实现原理就是将所有的URL设置成ClickSpan,然后在它的onClick事件中加入你想要的控制逻辑就可以了。

private void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder,      final URLSpan urlSpan) {    int start = clickableHtmlBuilder.getSpanStart(urlSpan);    int end = clickableHtmlBuilder.getSpanEnd(urlSpan);    int flags = clickableHtmlBuilder.getSpanFlags(urlSpan);    ClickableSpan clickableSpan = new ClickableSpan() {          public void onClick(View view) {            //Do something with URL here.          }    };    clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags);}private CharSequence getClickableHtml(String html) {    Spanned spannedHtml = Html.fromHtml(html);    SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml);    URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class);    for(final URLSpan span : urls) {      setLinkClickable(clickableHtmlBuilder, span);    }    return clickableHtmlBuilder;}

如何使用

TextView myTextView = (TextView)findViewById(R.id.myTextView);  String url = "This is a page with lots of URLs. <a href=\"http://droidyue.com\">droidyue.com</> " +          "This left is a very good blog. There are so many great blogs there. You can find what" +          "you want in that blog."          + "The Next Link is <a href=\"http://www.google.com.hk\">Google HK</a>";  myTextView.setText(getClickableHtml(url));

实现自己的控制

我们需要在ClickSpan的onClick方法中加入自己的控制逻辑,比如我们使用傲游浏览器打开点击的链接。

public void onClick(View view) {  Log.i(LOGTAG, "onClick url=" + urlSpan.getURL() );    Intent intent = new Intent(Intent.ACTION_VIEW);  intent.setData(Uri.parse(urlSpan.getURL()));  intent.setPackage("com.mx.browser");  startActivity(intent);}

提醒

不要忘了设置TextView的autoLink属性。

<TextView    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:text="@string/hello_world"    android:id="@+id/myTextView"    android:autoLink="web"/>

关注微信号:javalearns 随时随地学Java

或扫一扫

随时随地学Java



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐
  • —软件人才免语言低担保 赴美带薪读研!—



更多相关文章

  1. Android(安卓)-- Init进程对信号的处理流程
  2. 高通与安卓水火不容 Android音频系统缺陷测评
  3. Android(安卓)MVP模式简单例子实战
  4. Android应用实例之---使用Linkify + 正则式区分微博文本链接及跳
  5. android lbs 学习笔记
  6. Android中RxJava+Retrofit+MVP模式的整合(1)—目录设计
  7. android集成支付宝sdk
  8. android使用系统资源,链接当前主题中的Style
  9. 关于socket编程【以聊天为例】

随机推荐

  1. Android(安卓)获取系统时间
  2. 进度条ProgressBar
  3. Android(安卓)网页无法打开 net:ERR_UNKN
  4. android:实现退出确认框对话
  5. Android(安卓)拼音帮助类
  6. android中读取assets中的文件
  7. android Intent的一些用法
  8. android Intent打开各种类型文件(PDF、wo
  9. 下载APP(判断Ios或Android)
  10. Android(安卓)dependency has different