本文我们来介绍障碍线 (Barrier) 的使用, 平常在开发中用的相对要少一些, 但是在需要时会非常方便.
它的作用是将多个元素放到这个障碍线里面使时, 其中的任何元素的大小或位置变化时都会使它的位置进行改变.
可以理解成一面墙,"墙" 里面任何元素的位置或大小改变时都会导致它的改变, 从而保证所有的元素都在 "墙" 里面.
下面我们来举例进行说明, 会更加直观.
首先, 我们先创建两个元素:
接下来, 我们来创建一条垂直的 Barrier:
创建后, 我们把这两个 View 拖到这个 Barrier 里面:
注意: 这里将 View 拖进去并不是真正创建了层级关系, 我们看代码可以知道, 仅仅这个 Barrier 引用了两个 View 的 ID:
- <Android.support.constraint.Barrier
- Android:id="@+id/barrier"
- Android:layout_width="wrap_content"
- Android:layout_height="wrap_content"
- App:barrierDirection="left"
- App:constraint_referenced_ids="button,textView"
- tools:layout_editor_absoluteX="104dp" />
默认的 Barrier 是在所有元素的左面, 我们选中它后可以选择靠右对齐:
创建完成后我们来调整其里面的各个 View 的大小和位置就可以理解它的作用了:
总结
Barrier 特别在复杂的页面布局的时候非常有用, 不需要创建一个容器来放置这些子 View 来实现这样的功能了, 这也是我们使用 ConstraintLayout 的初衷, 保证层级的简单和高效.
来源: http://www.bubuko.com/infodetail-2866009.html