出现了什么问题?
private final SpannableStringBuilder mSpannableStringBuilder = new SpannableStringBuilder()
Typeface mCustomFont = Typeface.createFromAsset (getActivity().getAssets (), "fonts/DIN Alternate Bold.ttf" )
mSpannableStringBuilder.setSpan (mCustomFont , 0 , mSpannableStringBuilder.toString ().indexOf (Constants.N ), Spannable.SPAN _EXCLUSIVE_EXCLUSIVE)
textView.setText (mSpannableStringBuilder)
解决办法
自定义一个字体的类
public class CustomTypefaceSpan extends TypefaceSpan {
private final Typeface newType;
public CustomTypefaceSpan (String family, Typeface type) {
super (family);
newType = type;
}
@Override
public void updateDrawState (TextPaint ds) {
applyCustomTypeFace(ds, newType);
}
@Override
public void updateMeasureState (TextPaint paint) {
applyCustomTypeFace(paint, newType);
}
private static void applyCustomTypeFace (Paint paint, Typeface tf) {
int oldStyle;
Typeface old = paint.getTypeface();
if (old == null ) {
oldStyle = 0 ;
} else {
oldStyle = old.getStyle();
}
int fake = oldStyle & ~tf.getStyle();
if ((fake & Typeface.BOLD) != 0 ) {
paint.setFakeBoldText(true );
}
if ((fake & Typeface.ITALIC) != 0 ) {
paint.setTextSkewX(-0.25 f);
}
paint.setTypeface(tf);
}
}
然后设置字体的方法变化一下
private final SpannableStringBuilder mSpannableStringBuilder = new SpannableStringBuilder()
Typeface mCustomFont = Typeface.createFromAsset (getActivity().getAssets (), "fonts/DIN Alternate Bold.ttf" )
// mCustomFont-->>new CustomTypefaceSpan(textView.getText ().toString ()
mSpannableStringBuilder.setSpan (new CustomTypefaceSpan(textView.getText ().toString (),mCustomFont), 0 , mSpannableStringBuilder.toString ().indexOf (Constants.N ), Spannable.SPAN _EXCLUSIVE_EXCLUSIVE)
textView.setText (mSpannableStringBuilder)