Android ConstraintLayout中视图链可串联的视图数量上限是多少?
ConstraintLayout视图链的数量上限问题
嘿,别被那些示例局限啦——3个绝对不是ConstraintLayout视图链能串联的视图数量上限,链可以支持任意数量的视图,你遇到第4个元素不生效的情况,大概率是布局约束的设置出了问题。
为什么你的第4个视图没加入链?
要让多个视图形成有效的链,核心是满足两个关键条件:
- 链内的每个视图都要和相邻的视图建立双向约束:前一个视图的
end(水平链)/bottom(垂直链)要绑定到后一个视图的start(水平)/top(垂直),反过来后一个也要绑定到前一个的对应边界。 - 链的第一个视图要绑定到父容器的一侧边界(比如水平链的
start绑定到父容器start),最后一个视图绑定到父容器的另一侧边界(比如水平链的end绑定到父容器end)。 - 给链内任意一个视图设置链样式(
layout_constraintHorizontalChainStyle或layout_constraintVerticalChainStyle),比如spread、spread_inside、packed。
举个简单的4视图水平链示例(关键约束):
<!-- 第一个视图 --> <TextView android:id="@+id/tv1" ... app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toStartOf="@id/tv2" app:layout_constraintHorizontalChainStyle="spread"/> <!-- 第二个视图 --> <TextView android:id="@+id/tv2" ... app:layout_constraintStart_toEndOf="@id/tv1" app:layout_constraintEnd_toStartOf="@id/tv3"/> <!-- 第三个视图 --> <TextView android:id="@+id/tv3" ... app:layout_constraintStart_toEndOf="@id/tv2" app:layout_constraintEnd_toStartOf="@id/tv4"/> <!-- 第四个视图 --> <TextView android:id="@+id/tv4" ... app:layout_constraintStart_toEndOf="@id/tv3" app:layout_constraintEnd_toEndOf="parent"/>
只要按照这个规则设置,4个甚至更多视图都能完美遵循链的排列规则。你可以检查下自己的代码,是不是第4个视图的约束没和前一个视图形成双向绑定,或者首尾的边界约束没设置到位~
内容的提问来源于stack exchange,提问作者Vamsi
相关产品推荐
相关产品推荐

