当前位置: 移动技术网 > IT编程>移动开发>Android > Android中捕获TTextView文本中的链接点击事件方法

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

2019年07月24日  | 移动技术网IT编程  | 我要评论

uucall网络电话,顺心答题,上尉密令

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"
/>

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网