手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android中捕获TTextView文本中的链接点击事件方法
Android中捕获TTextView文本中的链接点击事件方法
摘要: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实现TextView中文字链接的4种方式介绍及代码

android开发中获取手机分辨率大小的方法

Android中使用pull解析器操作xml文件的解决办法

基于Android中手势交互的实现方法

Android中Webview自适应屏幕

android TextView属性的详细介绍 分享

android实现listview分页的方法

android中ListView数据刷新时的同步方法

Android绑定添加了注解的控件,及其事件方法

Android中隐藏标题栏和状态栏的方法

精品推荐
分类导航