package com.demo.lib.common.util.ui; import android.content.Context; import android.content.Intent; import android.text.Html; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextPaint; import android.text.style.ClickableSpan; import android.text.style.URLSpan; import android.view.View; public class TextViewUtil { /** * 获取可以点击的html内容 * * @param html * @param context * @return */ public static CharSequence getClickableHtml(String html, Context context, Integer color,Class jumpClass) { Spanned spannedHtml = Html.fromHtml(html); SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml); URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class); for (final URLSpan span : urls) { setLinkClickable(clickableHtmlBuilder, span, context, color,jumpClass); } return clickableHtmlBuilder; } /** * 设置点击超链接对应的处理内容 */ private static void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder, final URLSpan urlSpan, final Context context, final Integer linkColor, final Class jumpClass) { int start = clickableHtmlBuilder.getSpanStart(urlSpan); int end = clickableHtmlBuilder.getSpanEnd(urlSpan); int flags = clickableHtmlBuilder.getSpanFlags(urlSpan); ClickableSpan clickableSpan = new ClickableSpan() { public void onClick(View view) { context.startActivity(new Intent(context, jumpClass).putExtra("url", urlSpan.getURL())); } public void updateDrawState(TextPaint ds) { if (linkColor != null) ds.setColor(linkColor); // //设置是否要下划线 ds.setUnderlineText(false); } }; clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags); } }