第一步:自定義ClickableSpan
private static class MyURLSpan extends ClickableSpan {
private String mUrl;
MyURLSpan(String url) {
mUrl = url;
}
@Override
public void onClick(View widget) {
XLog.d(mUrl);
}
}
第二步:處理html
String text = "請點(diǎn)擊<a href=\"http://www.baidu.com\"> 百度 </a>查看詳情";
Spanned spanned = Html.fromHtml(text);
SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(spanned);
URLSpan[] urls = spannableStringBuilder.getSpans(0, spanned.length(), URLSpan.class);
for (URLSpan url : urls) {
MyURLSpan myURLSpan = new MyURLSpan(url.getURL());
int start = spannableStringBuilder.getSpanStart(url);
int end = spannableStringBuilder.getSpanEnd(url);
int flags = spannableStringBuilder.getSpanFlags(url);
spannableStringBuilder.setSpan(myURLSpan, start, end, flags);
//一定要加上這一句,看過很多網(wǎng)上的方法,都沒加這一句,導(dǎo)致ClickableSpan的onClick方法沒有回調(diào),直接用瀏覽器打開了
spannableStringBuilder.removeSpan(url);
}
第三步:設(shè)置給textView
textView.setText(spannableStringBuilder);
//這一句加上以后才能處理點(diǎn)擊
textView.setMovementMethod(LinkMovementMethod.getInstance());
至此就能首先自定義點(diǎn)擊了。