我的布局设计是一个带有长文本的TextView和一个位于TextView右侧的ImageView。我想将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>
答案 0 :(得分:33)
尝试android:layout_gravity="center_vertical"
答案 1 :(得分:20)
将此xml属性添加到您希望在其父级中心的孩子:
android:layout_centerInParent="true"
这将使其垂直/水平居中。
答案 2 :(得分:10)
将android:layout_height="wrap_content"
更改为RelativeLayout的android:layout_height="fill_parent"
并将android:layout_centerVertical="true"
添加到TextView,它将像魅力一样工作。
答案 3 :(得分:3)
您可以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>
答案 4 :(得分:3)
这会将您的图像置于其父级的垂直中心:
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>
答案 5 :(得分:1)
只需添加:
机器人:layout_gravity =&#34; center_vertical | CENTER_HORIZONTAL&#34;
答案 6 :(得分:1)
我在 Android Studio 4.2.1 中构建时发现了这个问题,经过一些修补后的解决方案是:
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
这样,约束到两边自动使widget居中,满足约束的需要。垂直居中时也是如此,使用:
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"