Estoy usando una vista de lista en Android 1.5 para mostrar una lista de imágenes y texto al lado de la imagen. Intento centrar verticalmente el texto, pero el texto está en la parte superior de la fila en lugar de estar centrado. A continuación se muestra mi diseño:¿Cómo alinear verticalmente un elemento dentro de una lista usando el diseño relativo?
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/row"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dip">
<ImageView android:id="@+id/item_image" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:paddingRight="10dip"
android:src="@drawable/default_image" android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:gravity="center_vertical"/>
<TextView android:id="@+id/item_title"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_toRightOf="@id/item_image"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:gravity="center_vertical"
/>
</RelativeLayout>
Parece extraño que necesito fijar alignParentTop = "true" cuando estoy tratando de centrar verticalmente el texto, pero si lo hago no el texto ni siquiera se presentó. ¿Qué estoy haciendo mal?
Gracias por intentarlo. Quiero que el diseño no sea más alto que la imagen, por lo que la imagen está bien.Probé tu xml, y veo lo mismo que estaba viendo con el mío. El texto no aparece a menos que agregue android: layout_alignParentTop = "true" a TextView, y luego, por supuesto, está justificado en la parte superior en lugar de centrado. ¿Pusiste el tuyo dentro de un ListView? –
Hmm. Funcionó bien cuando era una Vista en sí misma, pero cuando lo agregué a un ListView, entonces sí, dejó de funcionar. Acabo de probar algunas cosas y nada ha funcionado del modo en que debería haberlo hecho con RelativeLayout. Sin embargo, puedes lograr el mismo efecto usando LinearLayout. Establezca la orientación en horizontal y luego haga que la altura de TextView sea fill_parent, con center_vertical gravedad. Si desea tener varios TextViews junto al icono, puede colocarlos dentro de un segundo LinearLayout vertical. Esto no es elegante, pero no puedo entender por qué RelativeLayouts no estaba funcionando ... –
¿Podría editar su respuesta para mencionar LinearLayout? Eso parece funcionar. –