Android SpannableString及字体设置

import android.content.Context;  import android.graphics.Color;  import android.text.SpannableString;  import android.text.Spanned;  import android.text.style.AbsoluteSizeSpan;  import android.text.style.BackgroundColorSpan;  import android.text.style.BulletSpan;  import android.text.style.ForegroundColorSpan;  import android.text.style.RelativeSizeSpan;  import android.text.style.ScaleXSpan;  import android.text.style.StrikethroughSpan;  import android.text.style.StyleSpan;  import android.text.style.SubscriptSpan;  import android.text.style.SuperscriptSpan;  import android.text.style.TypefaceSpan;  import android.text.style.UnderlineSpan;  public class TextViewUtil {  /**      * 设置字体大小,用px      *       * @param context      *       * @param str      *            目标字符串      * @param start      *            开始位置      * @param end      *            结束位置      * @param pxSize      *            像素大小      * @return      */  public SpannableString getSizeSpanUsePx(Context context, String str, int start, int end, int pxSize) {          SpannableString ss = new SpannableString(str);          ss.setSpan(new AbsoluteSizeSpan(pxSize), 4, str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  return ss;      }  /**      * 设置字体大小,用dip      *       * @param context      *       * @param str      *            目标字符串      * @param start      *            开始位置      * @param end      *            结束位置      * @param dipSize      *            像素大小      * @return      */  public SpannableString getSizeSpanUseDip(Context context, String str, int start, int end, int dipSize) {          SpannableString ss = new SpannableString(str);          ss.setSpan(new AbsoluteSizeSpan(dipSize, true), 4, str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  return ss;      }  /**      * 设置字体大小,用sp      *       * @param context      *       * @param str      *            目标字符串      * @param start      *            开始位置      * @param end      *            结束位置      * @param spSize      *            sp大小      * @return      */  public SpannableString getSizeSpanSpToPx(Context context, String str, int start, int end, int spSize) {          SpannableString ss = new SpannableString(str);          ss.setSpan(new AbsoluteSizeSpan(DisplayUtil.sp2px(context, spSize)), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  return ss;      }  /**      * 设置字体相对大小      *       * @param context      * @param str      *            目标字符串      * @param start      *            开始位置      * @param end      *            结束位置      * @param relativeSize      *            相对大小 如:0.5f,2.0f      * @return      */  public SpannableString getRelativeSizeSpan(Context context, String str, int start, int end, float relativeSize) {          SpannableString ss = new SpannableString(str);          ss.setSpan(new RelativeSizeSpan(relativeSize), 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;      }  /**      * 设置字体下划线      *       * @param context      * @param str      *            目标字符串      * @param start      *            开始位置      * @param end      *            结束位置      * @return      */  public SpannableString getUnderLineSpan(Context context, String str, int start, int end) {          SpannableString ss = new SpannableString(str);          ss.setSpan(new UnderlineSpan(), 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      *            结束位置      * @return      */  public SpannableString getSuperscriptSpan(Context context, String str, int start, int end) {          SpannableString ss = new SpannableString(str);          ss.setSpan(new SuperscriptSpan(), 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 color      *            颜色值 如Color.BLACK      * @return      */  public SpannableString getBackGroundColorSpan(Context context, String str, int start, int end, int color) {          SpannableString ss = new SpannableString(str);          ss.setSpan(new BackgroundColorSpan(color), 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      *            结束位置      * @param color      *            颜色值 如Color.BLACK      * @return      */  public SpannableString getForegroundColorSpan(Context context, String str, int start, int end, int color) {          SpannableString ss = new SpannableString(str);          ss.setSpan(new ForegroundColorSpan(color), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  return ss;      }  /**      * 设置前景色      *       * @param context      *       * @param str      *            目标字符串      * @param start      *            开始位置      * @param end      *            结束位置      * @param color      *            颜色值 如:#CCCCCC      * @return      */  public SpannableString getForegroundColorSpan(Context context, String str, int start, int end, String color) {          SpannableString ss = new SpannableString(str);          ss.setSpan(new ForegroundColorSpan(Color.parseColor(color)), start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  return ss;      }  }  

相关内容推荐