admin
2024-01-26 c2d382d99ca506932985d1843d4371d6ed0203ff
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package com.weikou.beibeivideo.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.weikou.beibeivideo.ui.mine.BrowserActivity;
 
public class TextViewUtil {
 
    /**
     * 获取可以点击的html内容
     *
     * @param html
     * @param context
     * @return
     */
    public static CharSequence getClickableHtml(String html, Context context, Integer color,Class browserClazz) {
        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,browserClazz);
        }
        return clickableHtmlBuilder;
    }
 
    /**
     * 设置点击超链接对应的处理内容
     */
    private static void setLinkClickable(final SpannableStringBuilder clickableHtmlBuilder, final URLSpan urlSpan, final Context context, final Integer linkColor,Class browserClazz) {
        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,browserClazz).putExtra("url", urlSpan.getURL()));
            }
 
            public void updateDrawState(TextPaint ds) {
                if (linkColor != null)
                    ds.setColor(linkColor);
//                //设置是否要下划线
                ds.setUnderlineText(false);
            }
        };
        clickableHtmlBuilder.setSpan(clickableSpan, start, end, flags);
    }
 
}