2012-06-11 24 views
18

Mi pregunta es muy simple. ¿Cómo centrar el texto en un botón en Android? Intenté configurar el relleno en 0, la gravedad en el centro pero el resultado cuando lo ejecuto sigue siendo que el texto está centrado horizontalmente pero no verticalmente. El texto está un poco desplazado hacia abajo.Centro de texto, botón de Android

<Button 
    android:id="@+id/btnSame" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:layout_marginBottom="10dip" 
    android:layout_marginLeft="10dip" 
    android:layout_marginRight="10dip" 
    android:background="@drawable/layout_button_different" 
    android:gravity="center_vertical|center_horizontal" 
    android:height="30dp" 
    android:padding="0dip" 
    android:text="@string/equals" 
    android:textColor="@drawable/layout_button_different" 
    android:textSize="50dp" 
    android:width="70dp" /> 

mi ser también relevante: En la actividad hago esto:

btnEquals.setCompoundDrawablesWithIntrinsicBounds(null,getResources().getDrawable(R.drawable.up2), null, null); 
btnEquals.setPadding(0, 5, 0, 0); 
btnEquals.setTextSize(15); 

Esto funciona, pero después de esto me puse esto:

btnEquals.setCompoundDrawables(null, null, null, null); 
btnEquals.setPadding(0, 0, 0, 0); 

El resultado es una mala alineación vertical.

Respuesta

12

Su diseño actual no puede centrar el texto debido a los tamaños que ha seleccionado. Ha configurado la altura del botón en 30dp y su textSize es 50dp, y por la razón que sea, Android no puede ocuparse de eso y centrar el texto. Si haces que tu botón sea más grande o tu texto más pequeño, verás que el centrado funciona.

+0

Si la altura es 30DP entonces ¿cuál es el uso de 'androide: layout_height = "wrap_content" '? –

+0

@hotveryspicy: coloque el diseño del botón en un xml y cárguelo, y verá que al 'wrap_content' parece no importarle el derrame del texto en este caso. No sé por qué sucede eso, pero es lo que sucede (al menos cuando se ve a través de la presentación visual Eclipse del diseño, no lo puse en un dispositivo). – mah

+0

Gracias pero eliminando android: layout_height o android: layout_width se resuelve en una RuntimeException. – dieters

-1
<Button 
       android:id="@+id/AnswerE" 
       style="@style/defaultbuttonstyle" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="center" 
       android:onClick="AnswerCheck" 
       android:text=" E " 
       android:textStyle="bold" /> 

Esto funcionó para mí

0

También puede utilizar números negativos en setPadding. Esto puede ayudar si su fuente es grande y su botón es pequeño. Intente también configurar la parte superior o inferior a un número más negativo si todavía está descentrado.

1

Hay tres sistemas a considerar. El diseñador de diseño xml, el simulador y el teléfono real. El texto en el botón si especifica gravedad = "centro" se verá así. En el diseñador de diseño xml parecerá que la letra de la izquierda está en el centro del botón, pero el resto de las letras están a la derecha. (se ve incorrecto) En el simulador, el texto se muestra bien en el centro. (correcto) En el teléfono, el texto se muestra bien en el centro. (Correcto)

+0

Gracias por esta respuesta, pasé 15 minutos preguntándome qué estaba haciendo mal y resulta que simplemente 'se ve' incorrecto –

24

Es muy fácil, se puso esto:

android:textAlignment="gravity" 

Este trabajo cuando se tiene lo siguiente:

android:gravity="center" 
Cuestiones relacionadas