在日常的开发中,时常会遇到这类ui:
可使用一个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);
}
}