ConstraintLayout 允许您创建具有平面视图层次结构(没有嵌套视图组)的大型复杂布局。它类似于 RelativeLayout,因为所有视图都是根据兄弟视图和父视图布局之间的关系来布局的,但是它比 RelativeLayout 更灵活,并且更容易在 Android Studio 的布局编辑器中使用。
约束布局概述
要在 ConstraintLayout 中定义视图的位置,必须为视图添加至少一个水平约束和一个垂直约束。每个约束表示到另一个视图、父布局或不可见的连接或基准线(对齐线)。每个约束定义视图沿垂直或水平轴的位置;因此,每个视图的每个轴必须至少有一个约束,但通常需要更多约束。
当您将视图放入布局编辑器时,即使没有约束,它也会停留在原来的位置。然而,这只是为了使编辑更容易;如果在设备上运行布局时视图没有约束,则在[0,0] (左上角) 处绘制。
例如:视图编辑器在 A 下方显示视图 C,但它没有垂直约束
例如:视图 C 现在垂直约束在视图 A 之下
虽然缺少约束不会导致编译错误,但布局编辑器将缺少约束作为工具栏中的错误指示。要查看错误和其他警告,单击 “显示警告和错误”。为了帮助您避免丢失约束,布局编辑器可以使用 Autoconnect 和 infer constraints 特性自动为您添加约束。
在你的工程引入 ConstraintLayout 约束布局
如果你要在你的工程中使用约束布局,需要做以下几步操作:
第一步:确保在模块级构建中声明了 maven.google.com 库,gradle 配置如下:
123repositories {
google()
}
第二步:将库作为依赖项添加到同一个构建中。如下面的示例所示的 gradle 文件(注意,最新版本可能与示例中的不同,请查询最新版本):
123dependencies {
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
}
第三步:在 “工具栏” 或 “同步” 通知中,单击 Sync Project with Gradle Files.
做完上面的三步后你就可以愉快的使用约束布局 ConstraintLayout 了。
布局之间切换
有时候我们需要将我们之前的线性布局 LinearLayout 或者相对布局 RelativeLayout 切换成约束布局 ConstraintLayout,或者反过来切换,Android Studio 中的视图编辑器帮我们提供了一个方便的切换方式,需要如下两个步骤:
第一步:在 Android Studio 中打开布局,单击编辑器窗口底部的 Design 选项卡。
第二步:在 Component Tree 窗口中,右键单击布局并单击 Convert layout to ConstraintLayout. 选项。<