web-dev-qa-db-fra.com

RelativeLayout center vertical

Je veux faire une disposition de rangée de liste. Cette disposition a une vue d'image dans le coin le plus à gauche, une vue texte juste à côté de la vue d'image et une vue d'image dans le coin le plus à droite. Je veux que tous soient au centre 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>

J'ai aussi essayé d'ajouter Android:layout_centerVertical="true" à la vue texte, mais le résultat est que la vue texte est alignée en bas sur les deux images. J'ai essayé ceci dans Android émulateur 4.2. Quelqu'un pourrait-il m'aider à ce sujet?

82
user2368561

J'ai édité votre mise en page. Vérifiez ce code maintenant.

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

utilisation

 Android:layout_centerVertical="true"
175
stinepike

Si hauteur/largeur de la vue = wrap_content

utilisation:

Android:layout_centerHorizontal="true"
Android:layout_centerVertical="true"

Si hauteur/largeur de la vue = match_parent

utilisation:

Android:gravity="center_vertical|center_horizontal"
17
fullMoon

Essayez d’aligner le haut et le bas de la vue texte sur l’une des icônes. Cela fera en sorte que la vue texte partage la même hauteur, puis définissez gravity sur center_vertical pour que le texte à l'intérieur de la vue texte soit centré verticalement.

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

Pour moi, je devais enlever

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

from RelativeLayout, la configuration des enfants fonctionnerait donc:

<item name="Android:layout_centerVertical">true</item>
7
ViliusK

Cela fonctionne pour moi.

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

Ceci peut-être parce que la vue texte est trop haute. Changez Android: layout_height de la vue en wrap_content ou utilisez

Android:gravity="center_vertical"
1
Bolton

Ajout des deux Android:layout_centerInParent et Android:layout_centerVertical travaille pour moi au centre ImageView à la fois vertical et horizontal:

<ImageView
    ..
    Android:layout_centerInParent="true"
    Android:layout_centerVertical="true"
    />
0
Alex Jolig