2012-01-24 15 views
5

Estoy tratando de centrar un texto de edición vertical y horizontalmente en un diseño lineal, pero no está funcionando. Un problema muy simple en realidad.Necesita ayuda para centrar un texto de edición en un diseño lineal

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:background="@drawable/login"> 



<EditText 
    android:layout_width="150dp" 
    android:layout_height="wrap_content" 
    android:background="@drawable/loginbutton" 
    android:text="Username" 
    android:layout_gravity="center" 
    android:textSize="25dp" 
    android:gravity="center_horizontal|center_vertical" 
    android:textColor="#000000" 
    android:layout_margin="10dp" 
    android:id="@+id/username"> 
    </EditText> 

Voy a intentar cambiar a una relación relativa mientras tanto.

Respuesta

10

LinearLayout no son compatibles con el centrado en la dirección apila objetos por lo que yo sé. A menos que el LinearLayout sea crucial (que en su caso no debería ser, ya que también necesita el centrado), le recomendaría que cambie a RelativeLayout.
Con un RelativeLayout, puede establecer el atributo android:layout_centerInParent="true" en el EditText para centrarlo.

+0

gracias por la información! – codesomethin

+0

ahora, ¿cómo podría centrar los 3 en la pantalla? Porque centro una y pongo las 2 debajo, pero parece tonto. Necesito que los 3 estén centrados, casi como si estuvieran en una vista y centro esa vista en el padre. ¿Algunas ideas? – codesomethin

+1

Centre solo uno de ellos, y luego use las etiquetas arriba y abajo en los otros dos utilizando solo el centrado horizontal. – blindstuff

1

El uso de la gravedad afecta la gravedad de los contenidos de dicho elemento UI, esto significa (en este caso) que el texto dentro de EditText estaría centrado. Para centrar el elemento de la interfaz de usuario en sí, debe definir la distribución_gravedad, ya que es la gravedad que tiene un elemento de la interfaz de usuario dentro de su elemento primario. El código publicado por el OP hará el centro horizontal pero no el centro vertical.

Como alternativa se puede utilizar RelativeLayout

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:background="@drawable/login" 
android:orientation="vertical" > 

<EditText 
    android:id="@+id/username" 
    android:layout_width="150dp" 
    android:layout_height="wrap_content" 
    android:layout_margin="10dp" 
    android:background="@drawable/loginbutton" 
    android:layout_centerInParent="true" 
    android:text="Username" 
    android:textColor="#000000" 
    android:textSize="25dp" > 
</EditText> 

</RelativeLayout> 
+0

tengo tanto en el EditarTexto ... – codesomethin

-1

Prueba esto:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:background="@drawable/login" 
android:layout_centerVertical="true" 
android:layout_centerInParent="true"> 
+0

que aún no ha exacta código de trabajo. ¿Debo agregar esas 2 líneas en el texto de edición? – codesomethin

+0

Usted podría intentar, pero también se podría tratar de añadir 'android: layout_gravity = "center_horizontal | center_vertical"' – VicVu

+1

'androide: layout_centerVertical = "true" android: layout_centerInParent = "true"' se utiliza cuando el interior de una disposición relativa , establecer aquellos en el diseño lineal no haría nada. – blindstuff

1

Es muy simple. Agregue android: gravedad = "centro" con el diseño lineal.

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:gravity="center" 
> 
1
LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
android:background="@drawable/login" 
android:gravity="center" 
Cuestiones relacionadas