TextViewSpannableString用于实现可点击的超链接效果看到这里,你已经对TextView有了一定的了解,至少你用过这个控件来显示文字。现在要实现一些更复杂的效果。1、实现可点击的超链接我们在APP开发过程中会遇到这样的需求,比如:带下划线的是可点击的,一般点击后会跳转到某个网页(这里不讨论)。面对这样的需求,你可能已经知道TextView可以加下划线了。您的实施可能是:通过登录,您同意我们的隐私政策和使用条款[TextView]----[TextView]--[TextView]---[TextView][通过登录,您同意我们的][隐私Policy][&][Termsofuse]然后给可点击的TextView加上下划线,然后设置点击事件就ok了。如果你对此感到满意,那么你可以继续往回看,看看它是如何只用一个TextView实现的。2.可点击的超链接(基础)介绍一下SpannableString,我们用它来实现一个简单的下划线,并设置监听点击事件。StringclickString="我爱安卓!";SpannableStringspannableString=newSpannableString(clickString);spannableString.setSpan(newClickableSpan(){@OverridepublicvoidonClick(Viewwidget){Toast.makeText(getActivity(),"Love",Toast.LENGTH_SHORT).show();}},2,6,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);tv_tip.setText(spannableString);tv_tip.setMovementMethod(LinkMovementMethod.getInstance());3.多个可点击超链接(改进)这次我们将使用一个新类:SpannableStringBuilder。看名字就知道,它的功能类似于StringBuilder,就是连接多个SpannableString。最终效果:点击效果:代码实现(重点是连接多个SpannableString):finalStringlinkWord1="Android";finalStringlinkWord2="你还好吗?";finalStringlinkWord3="想想你!";Stringword="你好"+linkWord1+","+linkWord2+"我很好,"+linkWord3;SpannableStringBuilderspannableStringBuilder=newSpannableStringBuilder(word);intindex1=word.indexOf(linkWord1);intindex2=word.indexOf(linkWord2);intindex3=word.indexOf(linkWord3);spannableStringBuilder.setSpan(newClickableSpan(){@OverridepublicvoidonClick(Viewwidget){Toast.makeText(getActivity(),linkWord1,Toast.LENGTH_SHORT).show();}@OverridepublicvoidupdateDrawState(TextPaintds){super.updateDrawState(ds);ds.setColor(Color.RED);//设置文件颜色ds.setUnderlineText(true);//设置下划线}},index1,index1+linkWord1.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);spannableStringBuilder.setSpan(newClickableSpan(){@OverridepublicvoidonClick(Viewwidget){Toast.makeText(getActivity(),linkWord2,Toast.LENGTH_SHORT).show();}@OverridepublicvoidupdateDrawState(TextPaintds){super.updateDrawState(ds);ds.setColor(Color.GREEN);//设置文件颜色ds.setUnderlineText(true);//设置下划线}},index2,index2+linkWord2.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);spannableStringBuilder.setSpan(newClickableSpan(){@OverridepublicvoidonClick(Viewwidget){Toast.makeText(getActivity(),linkWord3,Toast.LENGTH_SHORT).show();}@OverridepublicvoidupdateDrawState(TextPaintds){super。更新原始状态(ds);ds.setColor(Color.BLUE);//设置文档颜色ds.setUnderlineText(false);//设置下划线}},index3,index3+linkWord3.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);tv_tip。设置文本大小(14);tv_tip.setText(spannableStringBuilder);tv_tip.setMovementMethod(LinkMovementMethod.getInstance());4.当然,对于多个可点击的超链接(html)还有一种方法,就是用TextView显示html格式的Text,然后对里面的url进行处理,过程还是和我们上面用的方法差不多,只是加上代码:Stringhtml="
\n"+"Hello