admin
2021-06-08 cca287441f277a3049cc280ae0d1e622d99d22ef
app/src/main/java/com/tejia/lijin/app/util/ui/TextViewUtil.java
@@ -26,7 +26,7 @@
        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;
    }
@@ -35,7 +35,16 @@
        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;
    }
@@ -43,14 +52,18 @@
    /**
     * 设置点击超链接对应的处理内容
     */
    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) {
@@ -61,6 +74,15 @@
                ds.clearShadowLayer();
            }
        }, start, end, flags);
        //防止点击事件不响应
        clickableHtmlBuilder.removeSpan(urlSpan);
    }
    public static interface URLClickListener {
        public void onClick(String url);
    }
}