SpannableString在项目开发中用到的很多,例如同一个字符串字体大小不同,或字体颜色不同等
个人总结了一些
代码如下:
public class TextViewUtil {
/**
* 设置字体大小,用sp
*
* @param context
* @param str 目标字符串
* @param start 开始位置
* @param end 结束位置
* @param spSize sp大小
* @return
*/
public static SpannableString getSizeSpanSpToPx(Context context, String str, int start, int end, int spSize) {
SpannableString ss = new SpannableString(str);
ss.setSpan(new AbsoluteSizeSpan(DensityUtils.sp2px(context, spSize)), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return ss;
}
/**
* 设置背景色
*
* @param context
* @param str 目标字符串
* @param start 开始位置
* @param end 结束位置
* @param color 颜色值 如:#CCCCCC
* @return
*/
public SpannableString getBackGroundColorSpan(Context context, String str, int start, int end, String color) {
SpannableString ss = new SpannableString(str);
ss.setSpan(new BackgroundColorSpan(Color.parseColor(color)), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return ss;
}
/**
* 设置字体删除线
*
* @param context
* @param str 目标字符串
* @param start 开始位置
* @param end 结束位置
* @return
*/
public SpannableString getDeleteLineSpan(Context context, String str, int start, int end) {
SpannableString ss = new SpannableString(str);
ss.setSpan(new StrikethroughSpan(), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return ss;
}
/**
* 设置放大系数
*
* @param context
* @param str 目标字符串
* @param start 开始位置
* @param end 结束位置
* @param scale 放大多少倍,x轴方向,y轴不变 如:0.5f, 2.0f
* @return
*/
public SpannableString getScaleSpan(Context context, String str, int start, int end, float scale) {
SpannableString ss = new SpannableString(str);
ss.setSpan(new ScaleXSpan(scale), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return ss;
}
/**
* 设置下标
*
* @param context
* @param str 目标字符串
* @param start 开始位置
* @param end 结束位置
* @return
*/
public SpannableString getSubscriptSpan(Context context, String str, int start, int end) {
SpannableString ss = new SpannableString(str);
ss.setSpan(new SubscriptSpan(), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return ss;
}
/**
* 设置字体
*
* @param context
* @param str 目标字符串
* @param start 开始位置
* @param end 结束位置
* @param typeface 字体类型 如:default,efault-bold,monospace,serif,sans-serif
* @return
*/
public SpannableString getTypeFaceSpan(Context context, String str, int start, int end, String typeface) {
SpannableString ss = new SpannableString(str);
ss.setSpan(new TypefaceSpan(typeface), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return ss;
}
/**
* 设置字体形体
*
* @param context
* @param str 目标字符串
* @param start 开始位置
* @param end 结束位置
* @param style 字体类型 如: Typeface.NORMAL正常 Typeface.BOLD粗体 Typeface.ITALIC斜体
* Typeface.BOLD_ITALIC粗斜体
* @return
*/
public SpannableString getStyleSpan(Context context, String str, int start, int end, int style) {
SpannableString ss = new SpannableString(str);
ss.setSpan(new StyleSpan(style), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return ss;
}
有缺少的欢迎补充