2013-05-17 6 views
5

Ich kann kleinere letzte 2 Nummer machen, aber ich will sie zeigen top wie unten gezeigtes Bild.Wie benutze ich 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); 

Dank Talha

enter image description here

+0

Überprüfen Sie meine Antwort – Pragnani

Antwort

4

Edit:

können Sie verwenden 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); 

Schrift vergrößern den Effekt zu sehen

enter image description here


Versuchen Sie dies Ich finde keine andere Art und Weise, aber der Exponent Text original spannalbe Zeichenfolge

Nehmen Spans anhängen, was immer Sie für die SpannableStringBuilder wollen

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

Bearbeiten 2

Wenn Sie einen benutzerdefinierten Bereich wie unten erstellen, richten Sie den Supertext unbedingt nach oben aus. Aber wenn Sie den Standard SuperscriptSpan verwenden, kann der Text nicht nach oben ausgerichtet werden.

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); 
    } 
}