Android中捕获TTextView文本中的链接点击事件方法

 更新时间:2015年01月19日 10:38:48   投稿:junjie  
这篇文章主要介绍了Android中捕获TTextView文本中的链接点击事件方法,本文给出了实现代码和使用方法以及实现自己控制的方法,需要的朋友可以参考下

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://jb51.net\">jb51.net</> " +
          "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"
/>

相关文章

  • Android实现炫酷播放效果

    Android实现炫酷播放效果

    这篇文章主要为大家详细介绍了Android实现炫酷播放效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • Android编程实现圆角边框布局效果的方法

    Android编程实现圆角边框布局效果的方法

    这篇文章主要介绍了Android编程实现圆角边框布局效果的方法,结合实例形式分析了Android TableLayout布局的相关属性操作与圆角边框实现技巧,需要的朋友可以参考下
    2017-06-06
  • Android 将 android view 的位置设为右下角的解决方法

    Android 将 android view 的位置设为右下角的解决方法

    Android 将 android view 的位置设为右下角的解决方法,需要的朋友可以参考一下
    2013-05-05
  • Android仿QQ、微信聊天界面长按提示框效果

    Android仿QQ、微信聊天界面长按提示框效果

    最近在工作项目中要实现一个长按提示 “复制” 的功能,类似于QQ、微信聊天界面长按提示框效果,本来想偷懒在网上找个开源的项目用,但是看了好几个都不是很满意,所以就打算按照自己的思路来实现一个。下面分享给大家,有需要的朋友们可以参考借鉴。
    2016-11-11
  • RecyclerView实现抖音纵向滚动ViewPager效果

    RecyclerView实现抖音纵向滚动ViewPager效果

    这篇文章主要为大家详细介绍了RecyclerView实现抖音纵向滚动ViewPager效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • Android开发学习路线图

    Android开发学习路线图

    这篇文章主要介绍了Android开发学习路线图,本文从基础、入门、进阶、高级等4个方面铺开学习路线图,需要的朋友可以参考下
    2015-04-04
  • Action获取请求参数的三种方式

    Action获取请求参数的三种方式

    这篇文章主要介绍了Action获取请求参数的三种方式的,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • Android设置控件阴影的三种方法

    Android设置控件阴影的三种方法

    这篇文章主要为大家详细介绍了Android设置控件阴影的三种方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11
  • Android识别NFC芯片制造商的方法

    Android识别NFC芯片制造商的方法

    这篇文章介绍了Android识别NFC芯片制造商的方法,文中通过示例代码介绍的非常详细。对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-11-11
  • SQLSERVER实现更改表名,更改列名,更改约束代码

    SQLSERVER实现更改表名,更改列名,更改约束代码

    这篇文章主要介绍了SQLSERVER实现更改表名,更改列名,更改约束代码的相关资料,需要的朋友可以参考下
    2016-03-03

最新评论