Android Studio 布局编辑器 ConstraintLayout:包与链

Android Studio Layout Editor ConstraintLayout: pack vs chain

在 Android Studio 布局编辑器中,我看到 "pack" 和 "chain" 与 ConstraintLayout 相关。我知道它们都与多个视图在一条线上相互连接有关,但我不清楚它们的区别。

"pack"和"chain"有什么区别?

简答

A Chain 是一组在垂直或水平线上绑定在一起的视图。 Pack 意味着视图应该非常紧密地保持在一起,即相互接触(不包括任何填充)。

Pack 表示视图紧密地打包在一起。想象一下,你在旅行前把衣服紧紧地放在一个手提箱里。

注意事项:

  • 您可以水平或垂直打包视图。
  • 打包本身并不互相约束视图。

    • 如果它们尚未链接,则打包会移动它们在布局编辑器中的绝对位置,以便它们彼此相邻。
    • 如果它们是链接在一起的,那么将链接模式设置为 packed 会将它们紧密地绑定在一起。

      app:layout_constraintHorizontal_chainStyle="packed"
      

连锁店

当两个相邻的视图都相互有约束时,就会出现链。想象一条铁 link 链条。

documentation 很好地展示了这一点。

这条链可以继续,链中的每个 link(视图)都有一个双向 link 到它的邻居。

连锁mode/style

正如我在上面简要提到的,链有不同的模式或样式。它们如下所示 (图片来自 docs

  1. 点差(默认)
  2. 内部传播
  3. 加权
  4. 打包

所有这些都是链接。只有最下面的 packed.