it-swarm.com.ru

RelativeLayout центр по вертикали

Я хочу сделать макет строки списка. Этот макет имеет вид изображения в самом левом углу, текстовый вид рядом с изображением и вид изображения в самом правом. Я хочу, чтобы все они были в центре по вертикали.

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

Я также попытался добавить Android:layout_centerVertical="true" в текстовое представление, но в результате текстовое представление выровнялось снизу с двумя изображениями. Я пробовал это в эмуляторе Android 4.2. Кто-нибудь может мне помочь по этому поводу?

80
user2368561

Я отредактировал ваш макет. Проверьте этот код сейчас.

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

использование

 Android:layout_centerVertical="true"
174
stinepike

Если высота/ширина представления = wrap_content

использовать:

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

Если View's height/width = match_parent

использовать:

Android:gravity="center_vertical|center_horizontal"
17
fullMoon

Попробуйте выровнять верх и низ текстового представления по одному из значков, чтобы текстовый вид имел одинаковую высоту, а затем установите gravity в center_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" />
7
hidro

Для меня пришлось удалить

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

from RelativeLayout, поэтому детская конфигурация будет работать:

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

Это работает для меня.

<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

Это может быть потому, что текстовое представление слишком высоко. Измените Android: layout_height текстового обзора на wrap_content или используйте

Android:gravity="center_vertical"
1
Bolton

Добавление обоих Android:layout_centerInParent и Android:layout_centerVertical помогает мне центрировать ImageView по вертикали и горизонтали:

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