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

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

概述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中捕获TTextView文本中的链接点击事件方法全部内容,希望文章能够帮你解决Android中捕获TTextView文本中的链接点击事件方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1142377.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存