90 votes

RelativeLayout center vertical

Je veux faire une mise en page en ligne de liste. Cette mise en page a un imageview dans le plus gauche, un textview juste à côté de l'imageview, et un imageview dans le plus droite. Je veux que tous ces éléments soient centrés verticalement.

<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 également essayé d'ajouter android:layout_centerVertical="true" à la vue texte, mais le résultat est que la vue texte s'aligne en bas avec les deux vues image. J'ai essayé ceci dans l'émulateur Android 4.2. Quelqu'un pourrait-il m'aider à ce sujet ?

198voto

Nobody Points 30

Utiliser

 android:layout_centerVertical="true"

84voto

Sujith Points 700

J'ai modifié 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>

23voto

fullMoon Points 66

Si la hauteur/largeur de la vue = wrap_content

utiliser :

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

Si la hauteur/largeur de la vue = match_parent

utiliser :

android:gravity="center_vertical|center_horizontal"

8voto

hidro Points 161

Essayez d'aligner le haut et le bas de la vue du texte sur l'une des icônes, afin que la vue du texte partage la même hauteur qu'elles. gravity à center_vertical pour que le texte dans 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" />

8voto

ViliusK Points 1257

Pour moi, j'ai dû enlever

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

de RelativeLayout pour que la configuration pour enfants fonctionne :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X