Android中捕获TTextView文本中的链接点击事件方法
Android中的TTextView很强大,我们可以不仅可以设置纯文本为其内容,还可以设置包含网址和电子邮件地址的内容,并且使得这些点击可以点击。但是我们可以捕获并控制这些链接的点击事件么,当然是可以的。
本文将一个超级简单的例子介绍一下如何实现在AndroidTextView捕获链接的点击事件。
关键实现
实现原理就是将所有的URL设置成ClickSpan,然后在它的onClick事件中加入你想要的控制逻辑就可以了。
privatevoidsetLinkClickable(finalSpannableStringBuilderclickableHtmlBuilder, finalURLSpanurlSpan){ intstart=clickableHtmlBuilder.getSpanStart(urlSpan); intend=clickableHtmlBuilder.getSpanEnd(urlSpan); intflags=clickableHtmlBuilder.getSpanFlags(urlSpan); ClickableSpanclickableSpan=newClickableSpan(){ publicvoidonClick(Viewview){ //DosomethingwithURLhere. } }; clickableHtmlBuilder.setSpan(clickableSpan,start,end,flags); }
privateCharSequencegetClickableHtml(Stringhtml){ SpannedspannedHtml=Html.fromHtml(html); SpannableStringBuilderclickableHtmlBuilder=newSpannableStringBuilder(spannedHtml); URLSpan[]urls=clickableHtmlBuilder.getSpans(0,spannedHtml.length(),URLSpan.class); for(finalURLSpanspan:urls){ setLinkClickable(clickableHtmlBuilder,span); } returnclickableHtmlBuilder; }