2013-05-17 5 views
5

posso rendere più piccolo ultimo numero 2 ma voglio che mostrino in alto come mostrato sotto l'immagine.Come utilizzare 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); 

Grazie talha

enter image description here

+0

Controlla la mia risposta – Pragnani

risposta

4

Edit:

È possibile utilizzare 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); 

Aumenta dimensione per vedere l'effetto

enter image description here


Prova questa non trovo altro modo, ma per aggiungere il testo apice alla stringa originale spannalbe

Applicare Campate quello che volete per la SpannableStringBuilder

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

Modifica 2

Se crei span personalizzati come di seguito, allinea completamente il supertext in alto. Ma se si utilizza il SuperscriptSpan predefinito, non è possibile rendere il testo allineato in alto.

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