在一个TextView之中,显示多种颜色字号的文字

    在日常的开发中,时常会遇到这类ui:

在一个TextView之中,显示多种颜色字号的文字_第1张图片

     可使用一个TextView,通过 SpannableStringBuilder 拼接而成:

public class CJ {

    public static final String TAG = "CJ";

    /**
     * 不同样式文字中间无内容
     *
     * @param head      前半部分文字内容
     * @param foot      后半部分文字内容
     * @param headSize  前半部分文字大小(sp)
     * @param footSize  后半部分文字大小(sp)
     * @param headColor 前半部分文字颜色(R.color....)
     * @param footColor 后半部分文字颜色(R.color....)
     * @param textView  TextView控件
     * @param activity  上下文
     */
    public static void cNoC(String head, String foot, int headSize, int footSize, int headColor, int footColor, TextView textView, Activity activity) {
        SpannableStringBuilder builder;
        String str = head + foot;
        builder = new SpannableStringBuilder(head + foot);
        int color01 = activity.getResources().getColor(headColor);
        int color02 = activity.getResources().getColor(footColor);
        ForegroundColorSpan markColorSpanHead = new ForegroundColorSpan(color01);
        ForegroundColorSpan markColorSpanFoot = new ForegroundColorSpan(color02);
        //设置字体颜色
        builder.setSpan(markColorSpanHead, 0, head.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        builder.setSpan(markColorSpanFoot, head.length(), builder.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        //设置head字体大小
        builder.setSpan(new AbsoluteSizeSpan(headSize, true), 0, head.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        //设置foot字体大小
        builder.setSpan(new AbsoluteSizeSpan(footSize, true), head.length(), str.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        textView.setText(builder);
    }

    /**
     * 不同样式文字中间有内容
     *
     * @param head      前半部分文字内容
     * @param content   中间部分文字内容(中间部分文字颜色、大小使用TextView属性)
     * @param foot      后半部分文字内容
     * @param headSize  前半部分文字大小(sp)
     * @param footSize  后半部分文字大小(sp)
     * @param headColor 前半部分文字颜色(R.color....)
     * @param footColor 后半部分文字颜色(R.color....)
     * @param textView  TextView控件
     * @param activity  上下文
     */
    public static void cHC(String head, String content, String foot, int headSize, int footSize, int headColor, int footColor, TextView textView, Activity activity) {
        SpannableStringBuilder builder = null;
        String star = head + content;
        String str = head + content + foot;
        builder = new SpannableStringBuilder(head + content + foot);
        int color01 = activity.getResources().getColor(headColor);
        int color02 = activity.getResources().getColor(footColor);
        ForegroundColorSpan markColorSpanHead = new ForegroundColorSpan(color01);
        ForegroundColorSpan markColorSpanFoot = new ForegroundColorSpan(color02);
        //设置字体颜色
        builder.setSpan(markColorSpanHead, 0, head.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        builder.setSpan(markColorSpanFoot, head.length() + content.length(), builder.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        //设置head字体大小
        builder.setSpan(new AbsoluteSizeSpan(headSize, true), 0, head.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        //设置foot字体大小
        builder.setSpan(new AbsoluteSizeSpan(footSize, true), star.length(), str.length(),
                Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        textView.setText(builder);
    }

}


你可能感兴趣的:(在一个TextView之中,显示多种颜色字号的文字)