1. 百分比尺寸
宽度为0dp(或匹配约束)的小部件的默认行为是spread(可通过layout_constraintWidth_default属性进行配置)。在ConstraintLayout 1.0.x中,我们可以选择将其更改为wrap,在1.1.x中,我们有一个新值percent,使我们可以将小部件设置为占用一定百分比的可用空间。
<!-- the widget will take 40% of the available space -->
app:layout_constraintWidth_default="percent"
app:layout_constraintWidth_percent="0.4"
2. 障碍
从这个新的小部件中,我们来看一些来自ConstraintLayout.com的例子。障碍将防止一个或多个小部件绕过障碍。当这种情况发生时,障碍将移动自身,并避免小部件被放置在其上方。
在下面的示例中,text1和text2的结束属性不能绕过障碍。当这种情况发生时,障碍将向右移动(如果在RTL布局中,则向左移动)。这在处理不同的小部件大小时特别有用,具体取决于某些配置或国际化。
<android.support.constraint.ConstraintLayout...>
<TextView
android:id="@+id/text1" ... />
<TextView
android:id="@+id/text2" ... />
<android.support.constraint.Barrier
android:id="@+id/barrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="end" <!-- start, top, bottom, right... -->
app:constraint_referenced_ids="text1,text2" />
<TextView
android:id="@+id/text3"
...
app:layout_constraintStart_toEndOf="@+id/barrier" />
</android.support.constraint.ConstraintLayout>
3.组
组,就像指南一样,是大小为0的小部件。但组可以帮助对一组小部件应用一些操作。最常见的情况是控制一组小部件的可见性。在处理此场景时,最常见的解决方案是在 Activity 或 Fragment 中自行维护一个视图列表或集合,甚至添加一个 ViewGroup 并将所有视图放置其中,控制容器的可见性。现在,您只需要将它们的 id 添加到组中,组将将操作传播到所有已连接的视图。
<android.support.constraint.ConstraintLayout ...>
<TextView
android:id="@+id/text1" ... />
<TextView
android:id="@+id/text2" ... />
<android.support.constraint.Group
android:id="@+id/group"
...
app:constraint_referenced_ids="text1,text2" />
</android.support.constraint.ConstraintLayout>
在这种情况下,如果我们调用
group.setVisibility(View.GONE);
那么text1和text2将会被设置为GONE。
原始文本在此。
官方文档描述在此。