Constraint Layout 是最受欢迎的 Jetpack 库之一,它的 2.0 正式版本也发布啦 (目前最新版本 2.1.0-alpha1)!也许您已熟悉了 Constraint Layout 1.1 版本中的功能,并开始用它来快速构建复杂的页面布局,而新版本除了包含 1.1 版本中的所有功能之外,还在 Android Studio 中集成了可以直接预览 XML 的工具,甚至可以直接在预览界面中对布局进行编辑。
Constraint Layout 2.0 带来了许多关于 Contraint Layout 的新特性,您可以通过在 build.gradle 中更改版本来升级使用。
implementation “androidx.constraintlayout:constraintlayout:2.0.1”
随着 2.0 版本的发布,我们专门在 github 上创建了 Constraint Layout 的代码库,但目前该代码库是只读状态,我们会逐步开放 pull request 的权限。
代码库
https://github.com/AndroidX/constraintlayout
Flow
Flow 是一种新的虚拟布局,它专门用来构建链式排版效果,当出现空间不足的情况时,它能够自动换行,甚至是自动延展到屏幕的另一区域。当您需要对多个元素进行链式布局,但不确定在运行时布局空间的实际大小是多少,那么 Flow 对您来说就非常有用。您可以使用 Flow 来实现让布局随着应用屏幕尺寸的变化 (比如设备发生旋转后出现的屏幕宽度变化) 而动态地进行自适应。
Flow
https://developer.android.google.cn/reference/androidx/constraintlayout/helper/widget/Flow?hl=en
图片: 该动画展示了 Flow 创建多个链将布局元素充裕地填充一整行
Flow 是一种虚拟布局。在 Constraint Layout 中,虚拟布局 (Virtual layouts) 作为 virtual view group 的角色参与约束和布局中,但是它们并不会作为视图添加到视图层级结构中,而是仅仅引用其它视图来辅助它们在布局系统中完成各自的布局功能。