mTvContent.setMovementMethod(LinkMovementMethod.getInstance()); //这一句是关键
mTvContent.setText(setTextLinkOpenByWebView(getContext(),mContent));
public SpannableStringBuilder setTextLinkOpenByWebView(final Context context, String answerString) {
if (!TextUtils.isEmpty(answerString)) {
Spanned htmlString = Html.fromHtml(answerString);
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) {
WebViewActivity.startWebView(context,url,"");
}
}, start, end, Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
}
}
}
return spannableStringBuilder;
}
}
return new SpannableStringBuilder(answerString);
}
内置WebView打开TextView文本中的超链接
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
推荐阅读更多精彩内容
- 下午产品经理提了个需求:要在服务端传来的文本中用应用内置浏览器打开超链接。去网上搜了下,找到了个方法: 很...
- 【法1】 /** * 处理html文本超链接点击事件 * @param context * @param tv *...
- 需求: 如题所诉。需要识别出文本中的链接,并显示成超链接的UI样式。点击能够跳转打开网页(最好是自己app内部的W...
- 1 利用SpannableStringBuilder获取存在的Span /*** Return an array ...