如今大部分的App都会有《软件服务协议》及《隐私协议》,好比手机QQ的注册页: html
public SpannableStringBuilder setTextLink(final Context context, String answerstring) {
if(!TextUtils.isEmpty(answerstring)) {
//fromHtml(String source)在Android N中已经弃用,推荐使用fromHtml(String source, int
// flags),flags 参数说明,
// Html.FROM_HTML_MODE_COMPACT:html块元素之间使用一个换行符分隔
// Html.FROM_HTML_MODE_LEGACY:html块元素之间使用两个换行符分隔
Spanned htmlString = Html.fromHtml(answerstring, Html.FROM_HTML_MODE_COMPACT);
if(htmlString instanceof SpannableStringBuilder) {
SpannableStringBuilder spannablestringbuilder =
(SpannableStringBuilder) htmlString;
//取得与a标签相关的span
Object[] objs = spannablestringbuilder.getSpans(0,
spannablestringbuilder.length(), URLSpan.class);
if(null != objs && objs.length != 0) {
for(Object obj : objs) {
int start = spannablestringbuilder.getSpanStart(obj);
int end = spannablestringbuilder.getSpanEnd(obj);
if(obj instanceof URLSpan) {
//先移除这个span,再新添加一个本身实现的span。
URLSpan span = (URLSpan) obj;
final String url = span.getURL();
spannablestringbuilder.removeSpan(obj);
spannablestringbuilder.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
//这里能够实现本身的跳转逻辑
Toast.makeText(MainActivity.this, url,
Toast.LENGTH_LONG).show();
}
}, start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
}
}
return spannablestringbuilder;
}
}
return new SpannableStringBuilder(answerstring);
}
复制代码
String conent = "文本超连接<a href='https://www.google.com/'>Google谷歌</a>及<a " +
"href='https://www.baidu.com/'>Baidu百度</a>";
tvLink.setMovementMethod(LinkMovementMethod.getInstance());//使超连接可点击
tvLink.setText(setTextLink(this, conent));
复制代码