我有一个水平方向的LinearLayout
,其中有ImageView
和TextView
(图像在左,文本在右)。我想将TextView
的第一行(即使它有多行)与ImageView
的中心对齐。我该如何实现呢?
我当前的代码将整个TextView
居中,而不是仅将第一行居中:
<LinearLayout
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:id="@+id/icon_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/icon_distance" />
<TextView
android:duplicateParentState="true"
android:gravity="center_vertical"
style="@style/taskAddressText"
android:id="@+id/task_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
4条答案
按热度按时间1tu0hz3e1#
您可以通过在运行时获取ImageView的高度将TextView的第一行设置为ImageView的中心,并将该高度除以2以获取ImageView的中心,然后将顶部边距或填充设置为TextView,如下所示:
初始化视图并在运行时从ImageView高度设置TextView顶部填充
将像素转换为dp
mnemlml82#
nqwrtyyt3#
您可以将文本视图的上边距设置为图像视图大小的一半,这样它将始终从图像视图的中心开始。
9fkzdhlc4#
使用constraintLayout,创建一个不带文本的不可见文本视图,以保证它始终是一行,然后将不可见文本视图与实际文本视图的顶部和开始对齐。
然后将imageview约束到不可见的textview。