¿Por qué el botón no está centrado verticalmente en LinearLayout?

Tengo un LinearLayout, que contiene solamente un botón. Quiero que este botón esté centrado verticalmente y alineado a la derecha. He intentado muchas maneras, pero no pude hacer este botón centrado verticalmente. Siempre está alineado con la parte superior. También intenté poner un botón en RelativeLayout, el botón no se puede centrar verticalmente tampoco.

El XML es como a continuación. ¿Hay algún problema con este diseño? Gracias.

<?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="wrap_content" android:background="#E8E3E4"> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="More" android:layout_gravity="right" /> </LinearLayout> 

Cambiar android: layout_gravity = "right" a android: layout_gravity = "right | center_vertical" no resolvió el problema en mi pregunta.

Dices en palabras que quieres que este se centre verticalmente, pero no has dicho en XML que quieres que este se centre verticalmente. Tendrá que ajustar su atributo android:layout_gravity para especificar tanto right como center_vertical .

Sin embargo, te recomiendo que vuelvas a RelativeLayout . Usa android:layout_centerVertical="true" y android:layout_alignParentRight="true" para hacer que el botón esté centrado verticalmente y alineado a la derecha.

Además, tenga en cuenta que su LinearLayout actual tiene android:layout_height="wrap_content" , lo que significa que no hay nada que se centre dentro. Necesita que el contenedor tenga más espacio que su contenido (por ejemplo, fill_parent ) si desea que el centrado tenga algún significado.

Este código colocará el botón en el centro vertical y en la pantalla derecha

 <?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:gravity="center_vertical"> <Button android:id="@+id/btnClick" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="right" android:text="Click Me" /> </LinearLayout> 

Trate de añadir android: gravity = "center" a su LinearLayout. Recuerdo haber leído en alguna parte que eso podría hacer el truco.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.