Android ConstraintLayout下TextView与ImageView水平居中对齐问题求助
解决ConstraintLayout中TextView与ImageView水平排列并垂直居中的问题
没问题,我来帮你搞定这个布局对齐的问题!你提到的“TextView在ImageView的左右方向上居中对齐”应该是指垂直方向的居中对齐,当前的问题主要是约束设置错误导致无法实现需求,而且ConstraintLayout确实不支持layout_gravity,必须通过约束规则来实现,下面是具体的解决方案:
问题分析
- 你给ImageView设置了
app:layout_constraintLeft_toLeftOf="@+id/title1",这会让ImageView和TextView左边缘对齐,完全不符合“TextView左、ImageView右”的水平排列需求; - TextView没有设置垂直方向的约束,默认会和父布局顶部对齐,无法实现与ImageView的垂直居中;
- ConstraintLayout依赖约束规则实现布局,
layout_gravity在这里确实不起作用。
修改后的完整布局代码
<android.support.v7.widget.CardView android:id="@+id/cv2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" app:cardCornerRadius="4dp" app:layout_constraintTop_toBottomOf="@+id/cv1"> <android.support.constraint.ConstraintLayout xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/title1" android:layout_width="0dp" android:layout_height="wrap_content" android:paddingLeft="10dp" android:text="Hero" android:textColor="@color/colorPrimary" android:textSize="16sp" android:textStyle="bold" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@+id/display_pic" <!-- 核心约束:让TextView与ImageView垂直居中对齐 --> app:layout_constraintCenterVertical_toCenterVertical="@+id/display_pic" /> <ImageView android:id="@+id/display_pic" android:layout_width="80dp" android:layout_height="80dp" android:layout_margin="16dp" android:adjustViewBounds="false" android:scaleType="centerCrop" <!-- 修正水平约束:让ImageView在TextView右侧,且与父布局右边缘对齐 --> app:layout_constraintLeft_toRightOf="@+id/title1" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@android:color/holo_red_light" /> </android.support.constraint.ConstraintLayout> </android.support.v7.widget.CardView>
关键修改点说明
- TextView垂直居中:添加
app:layout_constraintCenterVertical_toCenterVertical="@+id/display_pic",这会让TextView的垂直中心点与ImageView的垂直中心点完全对齐,实现你要的居中效果; - ImageView水平布局修正:移除错误的
app:layout_constraintLeft_toLeftOf="@+id/title1",替换为app:layout_constraintLeft_toRightOf="@+id/title1",确保ImageView在TextView右侧,形成水平排列; - 额外规范修正:把
textSize的单位从dp改成了sp,这是Android开发中设置文字大小的标准规范,能适配系统字体缩放。
内容的提问来源于stack exchange,提问作者Kumar
相关产品推荐
相关产品推荐

