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文本中的链接点击事件方法所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)