android TextView中识别多个url并分别点击跳转方法详解
实现方案:
我们直接参考实例代码:
privateStringpattern=
"((http|ftp|https)://)(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\\&%_\\./-~-]*)?|(([a-zA-Z0-9\\._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9\\&%_\\./-~-]*)?";
Patternr=Pattern.compile(pattern);
Matcherm;
mTv.setText(identifyUrl(richURL.msg));
publicSpannableStringBuilderForAllversidentifyUrl(CharSequencetext){
CharSequencecontextText;
CharSequenceclickText;
text=text==null?"":text;
//以下用于拼接本来存在的spanText
SpannableStringBuilderForAllversspan=newSpannableStringBuilderForAllvers(text);
ClickableSpan[]clickableSpans=span.getSpans(0,text.length(),ClickableSpan.class);
if(clickableSpans.length>0){
intstart=0;
intend=0;
for(inti=0;i=getText().length()){
intoff1=layout.getOffsetForHorizontal(line,x-getTextSize());
if(off==off1){
returnhandled;
}
}
ClickableSpan[]links=spannable.getSpans(off,off,ClickableSpan.class);
if(links.length>0){
ClickableSpanclickableSpan=links[0];
intstart=spannable.getSpanStart(clickableSpan);
intend=spannable.getSpanEnd(clickableSpan);
if(action==MotionEvent.ACTION_DOWN&&!hasSpan){
spannable.setSpan(backgroundColorSpan,start,end,Spanned.SPAN_INCLUSIVE_INCLUSIVE);
hasSpan=true;
}elseif(hasSpan){
spannable.removeSpan(backgroundColorSpan);
hasSpan=false;
}
}
returnlinks.length!=0;
}else{
if(hasSpan&&action!=MotionEvent.ACTION_MOVE){
spannable.removeSpan(backgroundColorSpan);
hasSpan=false;
}
}
returnhandled;
}
}
以上实例代码大家可以测试下,感谢大家的学习和对毛票票的支持。
热门推荐
5 庆双节祝福语简短
8 十月简短祝福语
10 同事男生节祝福语简短
11 家长祝福语大全简短内容
12 周年蛋糕祝福语简短英语
13 下雪宝宝生日祝福语简短
14 对航母的祝福语简短
15 导师退休花束祝福语简短
16 红颜生日祝福语简短独特
17 姐妹分手了祝福语简短
18 双节祝福语简短唯美