2013-05-17 21 views
5

最後の2つの数字を小さくすることはできますが、下の図のように上に表示します。TextAppearanceSpanの使い方

TextView TV = (TextView)findViewById(R.id.txt); 

Spannable WordtoSpan = new SpannableString("13.500,27");   

WordtoSpan.setSpan(new TextAppearanceSpan(null, 0, 12, null, null), WordtoSpan.length()-2, WordtoSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
TV.setText(WordtoSpan); 

おかげタルハガム

enter image description here

+0

私の答えをチェックしてください – Pragnani

答えて

4

編集:

あなたは効果を確認するためにSuperscriptSpan()

Spannable WordtoSpan = new SpannableString("13.500,27");   
WordtoSpan.setSpan(new TextAppearanceSpan(null, 0, 17, null, null), WordtoSpan.length()-2, WordtoSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
WordtoSpan.setSpan(new SuperscriptSpan(), WordtoSpan.length()-2, WordtoSpan.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 

増加フォントサイズを使用することができます

enter image description here


私は他の方法を見つけることができませんが、あなたはSpannableStringBuilder

のためにしたい、これまで何スパンを適用し、元spannalbe文字列に

を上付きテキストを追加するために、この を試してみてください

SpannableStringBuilder builder=new SpannableStringBuilder("13.500,"); 
    builder.append(Html.fromHtml("X<sup>27</sup>")) 

編集2

以下のようにカスタムスパンを作成すると、スーパーテキストが完全に一番上に整列します。しかし、デフォルトのSuperscriptSpanを使用すると、テキストを上にすることはできませんでした。

public class SuperscriptSpan2 extends MetricAffectingSpan implements 
      ParcelableSpan { 
     public SuperscriptSpan2() { 
     } 

    public int getSpanTypeId() { 
     return TextUtils.CAP_MODE_CHARACTERS; 
    } 

    public int describeContents() { 
     return 0; 
    } 

    public void writeToParcel(Parcel dest, int flags) { 
    } 

    @Override 
    public void updateDrawState(TextPaint tp) { 
     tp.baselineShift += (int) (tp.ascent()/1.25); 
    } 

    @Override 
    public void updateMeasureState(TextPaint tp) { 
     tp.baselineShift += (int) (tp.ascent()/1.25); 
    } 
}