2017-12-28 2 views
0

Spannable Stringを使用して文字列にスパンしないようにしようとしています。SpannableStringが数字にまたがるのを避ける方法

私は数字の変更を避け、文字をスパンするだけです。 それは可能ですか?

私のコード:

@SuppressLint("ParcelCreator") 
class TypeFace extends TypefaceSpan { 
    Typeface typeface; 

    public TypeFace(String family, Typeface typeface) { 
     super(family); 
     this.typeface = typeface; 
    } 

    @Override 
    public void updateDrawState(TextPaint ds) { 
     ds.setTypeface(typeface); 
    } 

    @Override 
    public void updateMeasureState(TextPaint ds) { 
     ds.setTypeface(typeface); 
    } 
} 


    public SpannableString spannableString(String s) { 
    SpannableString span = new SpannableString(s); 
    span.setSpan(new TypeFace("", Typeface.createFromAsset(context.getAssets(), 
      "fonts/font.ttf")), 0, span.length(), span.SPAN_EXCLUSIVE_EXCLUSIVE); 

    return span; 
    } 

私は、文字列のフォントを変更するためにこれを使用しますが、私は数字のフォントを変更しないようにしようとしています。

答えて

0

一つの方法は、それが数字でない場合は、各文字にスパンを設定することです:

SpannableString span = new SpannableString(s); 
for (int i = 0; i < span.length(); i++) { 
    if (Character.isDigit(span.charAt(i))) 
     continue; 

    span.setSpan(new TypeFace("", Typeface.createFromAsset(context.getAssets(), 
     "fonts/font.ttf")), i, i+1, span.SPAN_INCLUSIVE_INCLUSIVE); 
} 
関連する問題