Ответ 1
Попробуйте android:layout_gravity="center_vertical"
Мой дизайн макета - 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>
Попробуйте android:layout_gravity="center_vertical"
Добавьте этот атрибут xml в дочерний объект, который вы хотите центрировать внутри него:
android:layout_centerInParent="true"
Это центрирует его по вертикали/по горизонтали.
измените android:layout_height="wrap_content"
на android:layout_height="fill_parent"
RelativeLayout и добавьте android:layout_centerVertical="true"
в TextView, он будет работать как шарм.
Вы можете использовать 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>
Это поместит ваше изображение в вертикальный центр родителя:
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>
Просто добавьте это:
Android: layout_gravity = "center_vertical | center_horizontal"