Centrar verticalmente una vista en Android

Estoy tratando de centrar una View verticalmente en la pantalla con el siguiente diseño:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <EditText android:text="example text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" /> </LinearLayout> 

Sin embargo, no funciona. El EditText todavía está en la parte superior de la pantalla. ¿Puede alguien explicar lo que estoy haciendo mal aquí?

NOTA: si agrego center_horizontal al atributo layout_gravity entonces lo centra horizontalmente, pero todavía no se centra verticalmente.

ACTUALIZACIÓN: utilizando android:gravity="center_vertical" en el padre trabajado. Todavía no entiendo por qué android:layout_gravity="center_vertical" en el niño no funcionó.

Rastreo la respuesta en grupos de Google, aquí está © Romain Guy:

Bueno, en primer lugar RelativeLayout ignora layout_gravity. Entonces usted necesita saber que la gravedad significa "aplicar gravedad al contenido de esta vista" mientras que layout_gravity significa "aplicar la gravedad a esta vista dentro de su padre". Así que en un TextView, la gravedad alineará el texto dentro de los límites de TextView mientras que layout_gravity alineará el TextView dentro de los límites de su padre.

La respuesta simple y rápida es añadir android:gravity="center_vertical" a la vista principal (que contiene). Para aquellos que quieren saber por qué, por favor consulte la respuesta de @Bostone.

  • OnKeyDown no siempre se llama en la aplicación para Android
  • Cómo inflar vista desde XML en Android?
  • Deshabilitar el cambio automático de diseño en Android
  • La mejor manera de actualizar TextView, cada minuto, en el minuto
  • La ficha Diseño gráfico no aparece para algunos archivos de diseño en Eclipse
  • ¿Cuál es la diferencia entre fill_parent y wrap_content?
  • ¿Hay alguna forma de que los elementos de la interfaz de usuario se superpongan ligeramente (uno encima del otro) sin usar diseños absolutos?
  • ¿Cuál es el equivalente de Android a la aplicación de ejemplo de UICatalog de iOS / iPhone?
  • Cambiar texto del texto ListView de Android en la selección
  • Establecer la ubicación de Android Dialog
  • ¿Cómo diseñar botones?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.