2012-01-24 11 views
11

Ho creato un SpannableString, con il primo carattere e l'ultimo 2 più piccolo del resto. Ecco come si presenta:Regolazione dell'allineamento del testo tramite SpannableString

sBBBBss 

vorrei allineare i caratteri più piccoli in modo che siano allineati con la parte superiore del testo più grande, invece di fondo (come appaiono qui).

È possibile?

immagino sto cercando qualcosa di simile a questo pseudo-codice:

myAmount.setSpan (nuova RelativeAlignSpan (View.TOP), 0, 1, 0);

La mia unica altra alternativa è creare un nuovo layout, con più TextView, che popolo in modo indipendente, e allineare comunque per favore. Penso che sia un po 'disordinato e preferirei usare l'approccio SpannableString.

risposta

28

Quindi ho trovato la risposta a questa domanda postandola qui per aiutare il prossimo ragazzo.

ho creato una classe di supporto per contenere i metodi per regolare lo Span, si può chiamare usando questa sintassi (questa è l'impostazione gli ultimi 2 caratteri per apparire più alto sulla linea):

SpannableString contentAmount = new SpannableString(amount); 

contentAmount.setSpan(new SuperscriptSpanAdjuster(3.0/5.0), contentAmount.length() - 2, contentAmount.length(), SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE); 

e la classe di supporto è:

/** 
* This is a helper class to help adjust the alignment of a section of text, when using SpannableStrings to set text 
* formatting dynamically. 
* 
*/ 
import android.text.TextPaint; 
import android.text.style.MetricAffectingSpan; 

public class SuperscriptSpanAdjuster extends MetricAffectingSpan { 
    double ratio = 0.5; 

    public SuperscriptSpanAdjuster() { 
    } 

    public SuperscriptSpanAdjuster(double ratio) { 
     this.ratio = ratio; 
    } 

    @Override 
    public void updateDrawState(TextPaint paint) { 
     paint.baselineShift += (int) (paint.ascent() * ratio); 
    } 

    @Override 
    public void updateMeasureState(TextPaint paint) { 
     paint.baselineShift += (int) (paint.ascent() * ratio); 
    } 
} 
+1

+1 per la pubblicazione di una risposta per aiutare la comunità – Guillaume

+0

Grazie per la condivisione – Rotemmiz

+1

Ancora clip fuori dalla parte superiore di un numero o di testo – JPM

Problemi correlati