| | |
| | | SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml); |
| | | URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class); |
| | | for (final URLSpan span : urls) { |
| | | setLinkClickable(clickableHtmlBuilder, span, context, color); |
| | | setLinkClickable(clickableHtmlBuilder, span, context, color, null); |
| | | } |
| | | return clickableHtmlBuilder; |
| | | } |
| | |
| | | SpannableStringBuilder clickableHtmlBuilder = new SpannableStringBuilder(spannedHtml); |
| | | URLSpan[] urls = clickableHtmlBuilder.getSpans(0, spannedHtml.length(), URLSpan.class); |
| | | for (final URLSpan span : urls) { |
| | | setLinkClickable(clickableHtmlBuilder, span, context, color); |
| | | 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) { |
| | | 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() { |
| | | clickableHtmlBuilder.setSpan(new ClickableSpan() { |
| | | public void onClick(View view) { |
| | | context.startActivity(new Intent(context, ShareBrowserActivity.class).putExtra("url", urlSpan.getURL())); |
| | | if (urlClickListener != null) { |
| | | urlClickListener.onClick(urlSpan.getURL()); |
| | | } else { |
| | | context.startActivity(new Intent(context, ShareBrowserActivity.class).putExtra("url", urlSpan.getURL())); |
| | | } |
| | | } |
| | | |
| | | public void updateDrawState(TextPaint ds) { |
| | |
| | | ds.clearShadowLayer(); |
| | | } |
| | | }, start, end, flags); |
| | | //防止点击事件不响应 |
| | | clickableHtmlBuilder.removeSpan(urlSpan); |
| | | } |
| | | |
| | | |
| | | public static interface URLClickListener { |
| | | |
| | | public void onClick(String url); |
| | | |
| | | } |
| | | |
| | | } |