2012-08-30 5 views
9

Quiero crear un botón. Este botón contiene una letra con un tamaño de 22 píxeles y algunas letras a la derecha con un tamaño de 16 píxeles.Textos diferentes en un botón

De esta manera:
enter image description here

¿Cómo puedo lograr esto?

Por el momento tengo esto:

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

    btn.setText(span); 
} 
+0

bloqueo en este http://stackoverflow.com/questions/1529068/is -it-possible-to-have-multiple-styles-inside-a-textview – Pasha

Respuesta

20

Puede aplicar AbsoluteSizeSpan en su Spannable para hacer diferentes tamaños de texto en el mismo contenido.

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

Estoy tratando de usar esta solución para un BOTÓN pero no está funcionando –

8

en lugar de hacerlo a través de código, simplemente puede lograr mediante el uso de html cosas en recursos cadena. Por ejemplo:

definir un recurso de cadena:

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

y aplicarlo en el texto de su botón:

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

¿La unidad del valor especificado en tamaño es pixeles o dp? –

+1

creo que las dimensiones relacionadas con html están en píxeles – waqaslam

+0

Mientras esto funciona es increíblemente lento ... si está actualizando el texto a menudo o tiene muchos de estos casos en su jerarquía de vista, no lo use La API SpannabelStringBuilders podría no se lindo, pero es rápido – martyglaubitz

Cuestiones relacionadas