admin
2022-08-09 399ac289f80b7a40aa4210341db6b447cacdcf14
app/src/main/java/com/tejia/lijin/app/util/ui/TextViewUtil.java
@@ -21,12 +21,40 @@
     * @param context
     * @return
     */
    public static CharSequence getClickableHtml(String html, Context context,Integer  color) {
    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);
            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;
    }
@@ -34,25 +62,37 @@
    /**
     * 设置点击超链接对应的处理内容
     */
    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);
        ClickableSpan clickableSpan = 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) {
                if (linkColor != null)
                    ds.setColor(linkColor);
//                //设置是否要下划线
                //设置是否要下划线
                ds.setUnderlineText(false);
                ds.clearShadowLayer();
            }
        };
        clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags);
        }, start, end, flags);
        //防止点击事件不响应
        clickableHtmlBuilder.removeSpan(urlSpan);
    }
    public static interface URLClickListener {
        public void onClick(String url);
    }
}