约束布局(ContraintLayout)是相对布局的升级版,配合最新的布局编辑器
1
Android Studio从2.3版本开始在布局编辑器中支持约束布局,写作本书时Android Studio 2.3已经发布,创建界面的默认布局管理器已经变为约束布局。
(Layout Editor),约束布局堪称布局神器,完全不需要嵌套布局,只在布局编辑器中拖拖拉拉即可完成非常复杂的界面布局。不过,第一次使用约束布局,会发现布局编辑器中有很多小图标可能让人困惑,让我们逐步揭开约束布局的神秘面纱。
1 准备工作
首先需要检查一下Android Studio是否支持约束布局。打开SDK Manager,如1所示,确保已经安装了ConstraintLayout For Android和Solver for ConstraintLayout两个支持库。
图 1: 检查是否安装约束布局支持库
2 基本概念
约束布局的要旨是通过相对位置定位一个控件。如果我们把界面看做一个平面坐标系(原点位于左上角),控件看做坐标系中的一个点,则坐标(x, y)即可以唯一定位到这个点,如2所示。
也就是说,在约束布局中,我们至少要设置两个“约束”才能唯一定位一个控件:横向距离参照物的间隔x和纵向距离参照物的间隔y。考虑在界面安放第一个控件的情形,则参照物分别为界面的左边界和上边界,即我们安放第一个控件时,至少要设置这个控件距离上边界多远和距离左边界多远。如果不设置横向间距x,则控件默认靠最左边停靠;如果不设置纵向间距y,则控件默认靠左上边停靠;可以想象到,如果两个方向的间距都不设置,则控件就跑到最左上角了。如果多个控件都没有设置两个方向的间距,那么这些控件就都挤在左上角了。
图 2: 平面坐标系中的点
Android Studio的布局编辑器提供了方便和直观的工具帮助我们快速设置约束条件。我们以按钮为例,如3所示,每一个控件在布局编辑器中均提供了以下的手柄或者按钮可供操作:
约束手柄
在控件的四个方向都提供了约束手