Android中ConstraintLayout内TextView重叠问题求助
解决ConstraintLayout中TextView重叠问题
问题根源
- Barrier方向设置错误:你把
app:barrierDirection设为start,导致Barrier出现在标签TextView的左侧,右侧内容TextView的起始位置被错误约束到这里,直接和标签重叠。应该改为end,让Barrier定位在所有标签的最右端。 - 冗余属性:
android:layout_weight是LinearLayout专属属性,在ConstraintLayout里不起作用,必须删除。 - 垂直约束逻辑不一致:第三行的标签TextView用了
top_toBottomOf约束,和前两行的baseline对齐逻辑不一致,统一用baseline对齐更规整。
修正后的布局代码
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/txt_version" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/version" app:layout_constraintBaseline_toBaselineOf="@id/version" app:layout_constraintStart_toStartOf="parent" /> <TextView android:id="@+id/version" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="30dp" android:textAlignment="textStart" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@id/barrier1" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/txt_min_sdk" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/min_sdk" app:layout_constraintBaseline_toBaselineOf="@id/min_sdk" app:layout_constraintStart_toStartOf="parent" /> <TextView android:id="@+id/min_sdk" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="30dp" android:textAlignment="textStart" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/barrier1" app:layout_constraintTop_toBottomOf="@+id/version" /> <TextView android:id="@+id/txt_target_sdk" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/target_sdk" app:layout_constraintBaseline_toBaselineOf="@id/target_sdk" app:layout_constraintStart_toStartOf="parent" /> <TextView android:id="@+id/target_sdk" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginStart="30dp" android:textAlignment="textStart" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toEndOf="@+id/barrier1" app:layout_constraintTop_toBottomOf="@+id/min_sdk" /> <androidx.constraintlayout.widget.Barrier android:id="@+id/barrier1" android:layout_width="wrap_content" android:layout_height="wrap_content" app:barrierDirection="end" app:constraint_referenced_ids="txt_version,txt_min_sdk,txt_target_sdk" /> </androidx.constraintlayout.widget.ConstraintLayout>
内容的提问来源于stack exchange,提问作者ANDROID PRIME
相关产品推荐
相关产品推荐

