lmw
2024-05-27 c00669a852702e1aa1326872bb916f9a079b57e2
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
package cn.sinata.xldutils.utils;
 
import android.content.Context;
import android.graphics.Typeface;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.StyleSpan;
 
/**
 *  字符串特定位置开始变换fontsize或者字符颜色工具。
 */
 
public class SpanBuilder {
 
    private SpannableStringBuilder builder;
    //不可初始化空。
    private SpanBuilder(){}
    private SpanBuilder(String content) {
        builder = new SpannableStringBuilder(content);
    }
 
    public static SpanBuilder content(String content) {
        return new SpanBuilder(content);
    }
 
    public SpanBuilder sizeSpan(int start, int end,int dpSize) {
        AbsoluteSizeSpan sizeSpan = new AbsoluteSizeSpan(dpSize,true);
        builder.setSpan(sizeSpan, start, end,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        return this;
    }
 
    public SpanBuilder colorSpan(Context context, int start, int end, int colorRes) {
        builder.setSpan(new ForegroundColorSpan(context.getResources().getColor(colorRes)), start, end,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        return this;
    }
 
    public SpanBuilder boldSpan(Context context, int start, int end) {
        builder.setSpan(new StyleSpan(Typeface.BOLD), start, end,
                Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        return this;
    }
    public SpannableStringBuilder build() {
        return builder;
    }
}