2013-05-10 9 views
60

Ich möchte eine Liste Reihe Layout machen. Dieses Layout hat eine Bildansicht ganz links, eine Textansicht direkt neben der Bildansicht und eine Bildansicht ganz rechts. Ich will, dass sie alle in der Mitte stehen.RelativeLayout Zentrum vertikale

<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" zum Textview hinzuzufügen, aber das Ergebnis ist der Textview-align Boden mit den beiden Imageview. Ich habe dies in Android 4.2 Emulator versucht. Kann mir jemand helfen?

+0

Können Sie die Attrappe anbringen, die Sie brauchen machen? – Noundla

Antwort

58

Ich habe dein 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> 
150

Verwendung

android:layout_centerVertical="true" 
+23

Dies sollte die richtige Antwort sein, verursacht RelativeLayout nicht layout_gravity Attribut hat. – MightySeal

+3

verwenden Sie es auf die Elemente in der relativen Layout nicht auf die relative Layout selbst –

+0

Dies funktionierte, als ich es in die RelativeLayout und seine Kinder angebracht. –

1

Dies vielleicht, weil die Textview zu hoch ist. Ändere android: layout_height der textview zu wrap_content oder verwende

android:gravity="center_vertical" 
3

Dies funktioniert für mich.

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

Versuchen oben und unten Textansicht auf einen der Symbol Ausrichten wird dieser Text Ansicht teilen gleiche Höhe machen wie sie, dann gravity-center_vertical gesetzt vertikal den Text innerhalb der Textansicht Zentrum zu machen.

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

Für mich hatte ich

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

von RelativeLayout, zu entfernen, so Konfiguration Kinder funktionieren würde:

<item name="android:layout_centerVertical">true</item> 
+0

Das ist es !!! Habe es sofort nach dem Entfernen von Android: gravity center_vertical von RelativeLayout funktioniert. – Bruce

9

Wenn nach Ansicht der Höhe/Breite = wrap_content -> Verwendung:

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

Wenn = Ansicht der Höhe/Breite match_parent -> Verwendung:

android:gravity="center_vertical|center_horizontal" 
0

sowohl android:layout_centerInParent und android:layout_centerVertical Arbeit Hinzufügen für mich ImageView zum Zentrum sowohl vertikal als auch horizontal:

<ImageView 
    .. 
    android:layout_centerInParent="true" 
    android:layout_centerVertical="true" 
    />