Android布局center_vertical属性不生效 如何让TextView与ImageView垂直居中对齐
您好,我希望让tvGoldName和tvGoldValue两个控件与左侧的ImageView高度保持一致,并且实现垂直居中对齐,请问该如何实现?

我的布局代码如下:
<LinearLayout android:id="@+id/llGold" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/llToNextLevel" android:orientation="horizontal" android:layout_gravity="center_vertical" android:weightSum="10"> <RelativeLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="5" android:gravity="right"> <ImageView android:id="@+id/ivGoldIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingRight="10dp" android:src="@mipmap/coins" android:textColor="#FFFF00" android:textSize="21sp" /> <TextView android:id="@+id/tvGoldName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/ivGoldIcon" android:gravity="right|center_vertical" android:paddingRight="10dp" android:text="@string/gold" android:textColor="#FFFF00" android:textSize="21sp" /> </RelativeLayout> <TextView android:id="@+id/tvGoldValue" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="5" android:gravity="left" android:paddingRight="10dp" android:text="0" android:textSize="21sp" /> </LinearLayout>
解决方案
你可以通过以下修改实现需求:
- 调整最外层
LinearLayout属性,新增android:gravity="center_vertical",原本的android:layout_gravity="center_vertical"仅控制该布局自身在父容器的位置,新增的属性才会控制内部所有子元素垂直居中对齐。 - 给
tvGoldName添加两个对齐规则,让它的上下边界和左侧ImageView完全对齐,高度保持一致,配合已有的android:gravity="center_vertical"就能实现文字垂直居中:android:layout_alignTop="@id/ivGoldIcon" android:layout_alignBottom="@id/ivGoldIcon" - 给右侧
tvGoldValue的gravity属性新增center_vertical,进一步保证文字垂直居中。
修改后的完整代码如下:
<LinearLayout android:id="@+id/llGold" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/llToNextLevel" android:orientation="horizontal" android:layout_gravity="center_vertical" android:gravity="center_vertical" android:weightSum="10"> <RelativeLayout android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="5" android:gravity="right"> <ImageView android:id="@+id/ivGoldIcon" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingRight="10dp" android:src="@mipmap/coins" android:textColor="#FFFF00" android:textSize="21sp" /> <TextView android:id="@+id/tvGoldName" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_toRightOf="@id/ivGoldIcon" android:layout_alignTop="@id/ivGoldIcon" android:layout_alignBottom="@id/ivGoldIcon" android:gravity="right|center_vertical" android:paddingRight="10dp" android:text="@string/gold" android:textColor="#FFFF00" android:textSize="21sp" /> </RelativeLayout> <TextView android:id="@+id/tvGoldValue" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="5" android:gravity="left|center_vertical" android:paddingRight="10dp" android:text="0" android:textSize="21sp" /> </LinearLayout>
内容的提问来源于stack exchange,提问作者user21597761
相关产品推荐
相关产品推荐

