源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-01-01 18:32 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Android中捕获TTextView文本中的链接点击事件方法
Android中的TTextView很强大,我们可以不仅可以设置纯文本为其内容,还可以设置包含网址和电子邮件地址的内容,并且使得这些点击可以点击。但是我们可以捕获并控制这些链接的点击事件么,当然是可以的。 本文将一个超级简单的例子介绍一下如何实现在Android TextView 捕获链接的点击事件。 [b]关键实现[/b] 实现原理就是将所有的URL设置成ClickSpan,然后在它的onClick事件中加入你想要的控制逻辑就可以了。
[u]复制代码[/u] 代码如下:
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; }
[b]如何使用[/b]
[u]复制代码[/u] 代码如下:
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));
[b]实现自己的控制[/b] 我们需要在ClickSpan的onClick方法中加入自己的控制逻辑,比如我们使用傲游浏览器打开点击的链接。
[u]复制代码[/u] 代码如下:
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); }
[b]提醒[/b] 不要忘了设置TextView的autoLink属性。
[u]复制代码[/u] 代码如下:
<TextView     android:layout_width="wrap_content"     android:layout_height="wrap_content"     android:text="@string/hello_world"     android:id="@+id/myTextView"     android:autoLink="web" />
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部