Как центрировать ImageView вертикально в его родительском элементе? - PullRequest
20 голосов
/ 23 января 2010

Мой макет представляет собой TextView с длинным текстом и ImageView справа от TextView. Я хочу расположить ImageView по центру в его родительском элементе по вертикали, поэтому я использовал android: layout_centerVertical = "true", но оказалось, что ImageView выровнен по низу его родительского элемента. Если я не использую свойство layout_centerVertical, ImageView будет выровнен по верху его родителя. Как я могу решить эту проблему? Спасибо.

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent" android:layout_height="wrap_content"
    android:background="#000000">
    <ImageView android:id="@+id/t3" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:src="@drawable/arrow_right"
        android:layout_alignParentRight="true" android:background="#ff0000"
        android:layout_centerVertical="true" android:scaleType="centerInside" />
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="This a very very very very very very very very very very very very very very very very long sentence"
        android:textColor="#231ACC" android:layout_toLeftOf="@id/t3" />
</RelativeLayout>

Ответы [ 6 ]

33 голосов
/ 20 декабря 2011

Попробуйте android:layout_gravity="center_vertical"

21 голосов
/ 21 июня 2013

Добавьте этот атрибут xml к ребенку, которого вы хотите центрировать в пределах его родителя:

android:layout_centerInParent="true"

Это будет центрировать его вертикально / горизонтально.

11 голосов
/ 18 ноября 2011

изменить android:layout_height="wrap_content" на android:layout_height="fill_parent" RelativeLayout и добавить android:layout_centerVertical="true" в TextView, это будет работать как шарм.

3 голосов
/ 06 июня 2012

Это поместит ваше изображение в вертикальный центр его родителя:

android:layout_gravity="center_vertical"

Демо-версия:

<LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="64dp"
    android:orientation="horizontal">
    <ImageView 
        android:layout_width="48dip"
        android:layout_height="48dip"
        android:src="@drawable/ic_launcher"
        android:contentDescription="Application icon"
        android:layout_gravity="center_vertical" />

</LinearLayout>
3 голосов
/ 23 января 2010

Вы можете использовать LinearLayout с layout_width и layout_height, установленными на fill_parent, и гравитацией, установленными на vertical_center.

Примерно так:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <LinearLayout 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:gravity="center_vertical|center_horizontal"
        android:orientation="horizontal">

        <EditText 
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content" 
            android:id="@+id/input_field"
            android:gravity="left"
            android:layout_weight="1"
            android:text="Left Aligned"/>
               <EditText  
            android:id="@+id/input_field"
            android:layout_width="wrap_content" 
            android:layout_height="wrap_content"
            android:gravity="right"
            android:layout_weight="1"
            android:text="Right Aligned"/>
    </LinearLayout>
</LinearLayout>
1 голос
/ 22 января 2017

Просто добавьте это:

андроида: layout_gravity = "center_vertical | center_horizontal"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...