package com.tejia.lijin.app.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; import com.tejia.lijin.app.ui.invite.ShareBrowserActivity; public class TextViewUtil { /** * 获取可以点击的html内容 * * @param html * @param context * @return */ public static CharSequence getClickableHtml(String html, Context context, Integer color) { 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, null); } return clickableHtmlBuilder; } public static CharSequence getClickableHtml(String html, Context context, Integer color, URLClickListener urlClickListener) { 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, urlClickListener); } return clickableHtmlBuilder; } public static CharSequence getClickableHtml(Spanned spannedHtml, Context context, Integer color) { SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml); URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class); for (final URLSpan span : urls) { setLinkClickable(clickableHtmlBuilder, span, context, color, null); } return clickableHtmlBuilder; } public static CharSequence getClickableHtml(Spanned spannedHtml, Context context, Integer color, URLClickListener urlClickListener) { SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml); URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class); for (final URLSpan span : urls) { setLinkClickable(clickableHtmlBuilder, span, context, color, urlClickListener); } return clickableHtmlBuilder; } /** * 设置点击超链接对应的处理内容 */ private static void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder, final URLSpan urlSpan, final Context context, final Integer linkColor, final URLClickListener urlClickListener) { int start = clickableHtmlBuilder.getSpanStart(urlSpan); int end = clickableHtmlBuilder.getSpanEnd(urlSpan); int flags = clickableHtmlBuilder.getSpanFlags(urlSpan); clickableHtmlBuilder.setSpan(new ClickableSpan() { public void onClick(View view) { if (urlClickListener != null) { urlClickListener.onClick(urlSpan.getURL()); } else { context.startActivity(new Intent(context, ShareBrowserActivity.class).putExtra("url", urlSpan.getURL())); } } public void updateDrawState(TextPaint ds) { if (linkColor != null) ds.setColor(linkColor); //设置是否要下划线 ds.setUnderlineText(false); ds.clearShadowLayer(); } }, start, end, flags); //防止点击事件不响应 clickableHtmlBuilder.removeSpan(urlSpan); } public static interface URLClickListener { public void onClick(String url); } }