Quiero hacer un diseño de fila de lista. Este diseño tiene una vista de imagen en el extremo izquierdo, una vista de texto junto a la vista de imagen y una vista de imagen en el extremo derecho. Quiero que todos estén en el centro vertical.
<RelativeLayout
    android:layout_width="fill_parent" android:layout_height="100dp"
    android:gravity="center_vertical"
    >
    <ImageView 
        android:id="@+id/icon"
        android:layout_width="50dp" android:layout_height="50dp"
        android:layout_gravity="center_vertical" />
    <TextView 
        android:id="@+id/func_text" android:layout_toRightOf="@id/icon"
        android:layout_width="wrap_content" android:layout_height="100dp"
        android:layout_gravity="center_vertical" />
    <ImageView 
        android:layout_width="50dp" android:layout_height="50dp"
        android:layout_alignParentRight="true"
        android:layout_gravity="center_vertical"
        android:src="@drawable/arrow" />
</RelativeLayout>
También intenté agregar android:layout_centerVertical="true"a la vista de texto, pero el resultado es que la vista de texto se alinea en la parte inferior con la vista de dos imágenes. Probé esto en el emulador de Android 4.2. ¿Alguien podría ayudarme con esto?
                    
                        android
                                center
                                android-relativelayout
                                
                    
                    
                        usuario2368561
fuente
                
                
            fuente

Si la altura / ancho de la vista = wrap_content
utilizar:
android:layout_centerHorizontal="true" android:layout_centerVertical="true"Si la altura / ancho de la vista = match_parent
utilizar:
android:gravity="center_vertical|center_horizontal"fuente
Intente alinear la parte superior e inferior de la vista de texto a uno de los iconos, esto hará que la vista de texto compartiendo misma altura que ellos, a continuación, establezca
gravityacenter_verticalhacer que el texto dentro del texto centro de vista vertical.<TextView android:id="@+id/func_text" android:layout_toRightOf="@id/icon" android:layout_alignTop="@id/icon" android:layout_alignBottom="@id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center_vertical" />fuente
Para mi tuve que quitar
<item name="android:gravity">center_vertical</item>de RelativeLayout , por lo que la configuración de los niños funcionaría:
<item name="android:layout_centerVertical">true</item>fuente
Esto es trabajo para mí.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/rell_main_bg" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#096d74" > <ImageView android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_centerVertical="true" android:layout_centerHorizontal="true" android:src="@drawable/img_logo_large" android:contentDescription="@null" /> </RelativeLayout>fuente
Esto puede deberse a que la vista de texto es demasiado alta. Cambie android: layout_height de la vista de texto a wrap_content o use
android:gravity="center_vertical"fuente
Añadiendo ambos
android:layout_centerInParentyandroid:layout_centerVerticaltrabajo para mí para centrarImageViewtanto vertical como horizontalmente:<ImageView .. android:layout_centerInParent="true" android:layout_centerVertical="true" />fuente
<RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentStart="true" android:layout_centerInParent="true" android:layout_gravity="center_vertical" android:layout_marginTop="@dimen/main_spacing_extra_big" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/noto_kufi_regular" android:text="@string/renew_license_municipality" android:textColor="@color/sixth_text" android:textSize="@dimen/main_text" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/noto_kufi_regular" android:text="@{RenewLicenseBasicInfoFragmentVM.tvMunicipality}" android:textColor="@color/sixth_text" android:textSize="@dimen/main_text" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerInParent="true" android:layout_gravity="center_vertical" android:layout_marginTop="@dimen/main_spacing_extra_big" android:orientation="horizontal"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" android:fontFamily="@font/noto_kufi_regular" android:text="@string/renew_license_license_number" android:textColor="@color/sixth_text" android:textSize="@dimen/main_text" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="end" android:fontFamily="@font/noto_kufi_regular" android:text="@{RenewLicenseBasicInfoFragmentVM.tvLicenseNum}" android:textColor="@color/sixth_text" android:textSize="@dimen/main_text" /> </LinearLayout>`enter code here` </RelativeLayout>fuente