Android中如何在ConstraintLayout内实现两个TextView分别对齐起始端与末端?
Android中如何在ConstraintLayout内实现两个TextView分别对齐起始端与末端?
嗨,我完全懂你遇到的困扰!ConstraintLayout并不会自动帮你排列控件,必须给每个控件设置明确的约束才能让它们按照你的预期布局——你之前的代码里两个TextView都没加任何约束,所以它们默认堆在布局的左上角,自然就重叠或者显示异常啦。
咱们直接修改你的布局代码,加上关键约束就能搞定:
<androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/header" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/windowBackground"> <TextView android:id="@+id/dsa" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="DSA" android:textSize="24sp" android:textStyle="bold" android:padding="16dp" android:background="?attr/colorSurface" <!-- 关键约束:对齐父布局的起始端(左侧),并垂直居中 --> app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" /> <TextView android:id="@+id/strix" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Strix" android:textSize="24sp" android:textStyle="bold" android:padding="16dp" android:background="?attr/colorSurface" <!-- 关键约束:对齐父布局的末端(右侧),并垂直居中 --> app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
我来给你解释下这些约束的作用:
- 给
dsa添加app:layout_constraintStart_toStartOf="parent",让它和父布局的起始端(也就是屏幕左侧)对齐; - 给
strix添加app:layout_constraintEnd_toEndOf="parent",让它和父布局的末端(屏幕右侧)对齐; - 两个TextView都加上
app:layout_constraintTop_toTopOf="parent"和app:layout_constraintBottom_toBottomOf="parent",是为了让它们在垂直方向上和父布局保持一致的高度,也就是垂直居中,这样就能确保它们在同一行啦。
如果你的需求是让两个TextView和父布局顶部对齐,而不是垂直居中,那可以把每个TextView的app:layout_constraintBottom_toBottomOf="parent"去掉,只保留app:layout_constraintTop_toTopOf="parent"就行~
内容来源于stack exchange
相关产品推荐
相关产品推荐

