RelativeLayout-Mitte vertikal

88

Ich möchte ein Listenzeilenlayout erstellen. Dieses Layout hat ganz links eine Bildansicht, rechts neben der Bildansicht eine Textansicht und ganz rechts eine Bildansicht. Ich möchte, dass alle von ihnen mittig vertikal sind.

<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>

Ich habe auch versucht, android:layout_centerVertical="true"der Textansicht etwas hinzuzufügen, aber das Ergebnis ist, dass die Textansicht unten an den beiden Bildansichten ausgerichtet ist. Ich habe dies in Android 4.2 Emulator versucht. Kann mir jemand dabei helfen?

user2368561
quelle

Antworten:

80

Ich habe Ihr Layout bearbeitet. Überprüfen Sie diesen Code jetzt.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="#33B5E5"
android:padding="5dp" >

<ImageView
    android:id="@+id/icon"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentLeft="true"
    android:layout_centerInParent="true"
    android:background="@android:drawable/ic_lock_lock" />

<TextView
    android:id="@+id/func_text"
    android:layout_width="wrap_content"
    android:layout_height="100dp"
    android:layout_gravity="center_vertical"
    android:layout_toRightOf="@+id/icon"
    android:gravity="center"
    android:padding="5dp"
    android:text="This is my test string............"
    android:textColor="#FFFFFF" />

<ImageView
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:layout_alignParentRight="true"
    android:layout_centerInParent="true"
    android:layout_gravity="center_vertical"
    android:src="@android:drawable/ic_media_next" />

</RelativeLayout>
Sujith
quelle
186

verwenden

 android:layout_centerVertical="true"
Stinepike
quelle
31
Dies sollte die richtige Antwort sein, da RelativeLayout kein Attribut layout_gravity hat.
MightySeal
"ungültiger Parameter in einem linearen Layout"
Acauã Pitta
21

Wenn Views Höhe / Breite = wrap_content

verwenden:

android:layout_centerHorizontal="true"
android:layout_centerVertical="true"

Wenn die Höhe / Breite der Ansicht = match_parent ist

verwenden:

android:gravity="center_vertical|center_horizontal"
Badr
quelle
8

Versuchen Sie Ausrichten oben und unten Textansicht auf eines der Ikone, wird dies Textansicht teilen gleiche Höhe machen wie sie, dann setzen gravityauf , center_verticalum den Text in der Textansicht Mitte zu machen vertikal.

<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" />
Hidro
quelle
8

Für mich musste ich entfernen

<item name="android:gravity">center_vertical</item>

von RelativeLayout , damit die Konfiguration von Kindern funktioniert:

<item name="android:layout_centerVertical">true</item>
ViliusK
quelle
4

Das funktioniert bei mir.

<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>
Marvs
quelle
1

Dies liegt möglicherweise daran, dass die Textansicht zu hoch ist. Ändern Sie android: layout_height der Textansicht in wrap_content oder verwenden Sie

android:gravity="center_vertical"
Bolton
quelle
1

Fügen Sie beide hinzu android:layout_centerInParentund android:layout_centerVerticalarbeiten Sie für mich, um ImageViewsowohl vertikal als auch horizontal zu zentrieren:

<ImageView
    ..
    android:layout_centerInParent="true"
    android:layout_centerVertical="true"
    />
Alex Jolig
quelle
0
       <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>
Sreejesh K Nair
quelle