返回顶部
首页 > 资讯 > 移动开发 >Android中捕获TTextView文本中的链接点击事件方法
  • 318
分享到

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

方法事件Android 2022-06-06 10:06:09 318人浏览 八月长安
摘要

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中父View和子view的点击事件处理问题探讨简单讲解Android开发中触摸和点击事件的相关编程方法用Kotlin实现Android点击事件的方法Android中捕捉menu按键点击事件的方法Android 中ListView的Item点击事件失效的快速解决方法Android捕获点击事件范围的方法


--结束END--

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

本文链接: https://lsjlt.com/news/26917.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作