2012-08-30 14 views
9

Voglio creare un pulsante. Questo pulsante contiene una lettera con una dimensione di 22 pixel e alcune lettere a destra con una dimensione di 16 pixel.Diversi testi in un pulsante

Ti piace questa:
enter image description here

Come posso raggiungere questo obiettivo?

Al momento ho questo:

private void setText(Button btn, String text, String underText) { 
    Spannable span = new SpannableString(text + "\n" + underText); 

    btn.setText(span); 
} 
+0

Blocco a questo http://stackoverflow.com/questions/1529068/is -it-possibile-avere-più-stili-dentro-a-vista testo – Pasha

risposta

20

È possibile applicare AbsoluteSizeSpan nella vostra Spannable per fare il formato differente del testo negli stessi contenuti.

private void setText(Button btn, String text, String underText) { 

    Spannable span = new SpannableString(text + "\n" + underText); 
    span.setSpan(new AbsoluteSizeSpan(fontSize), startIndex, endIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    btn.setText(span); 
} 
+0

Sto provando a usare questa soluzione per un PULSANTE ma non funziona –

8

Invece di farlo tramite il codice, si può semplicemente realizzarlo utilizzando html roba in risorsa stringa. Per esempio:

definire una risorsa stringa:

<string name="tmp"><font size="30">2</font>abc</string> 

e applicarlo al testo di vostro pulsante:

android:text="@string/tmp" 
+1

L'unità del valore specificato in dimensione è pixel o dp? –

+1

credo che le dimensioni relative all'html siano in pixel – waqaslam

+0

Mentre funziona è incredibilmente lento ... se stai aggiornando il testo spesso o hai molti di questi casi nella tua gerarchia vista, non usarlo SpannabelStringBuilders API potrebbe non essere carina, ma è veloce – martyglaubitz

Problemi correlati