GoogleIO第一份惊喜-ConstraintLayout
了解iOS开发的童鞋应该知道,自iPhone6推出后,iOS也进入多屏适配时代,AutoLayout成为了适配的首选,Storyboard+AutoLayout成为了iOS布局的主要流派之一(代码适配也是不错的选择)。
拖拽组件,设定约束,一个界面就基本完成了(当然,还有一堆高级的用法)。而Android开发工程师还在苦逼地将设计稿分割,这部分用一个RelativeLayout,这部分用LinearLayout……然后嵌套一下,或者再套一层。对于很多对几大布局不是很了解的同学,往往几个界面的组成就够头痛一阵了。
拯救你们的救星来了,ConstraintLayout将解决你的难言之隐,还在等待什么,赶快拿起电话*&……%¥(不好意思出戏了)
开始
首先确保你的Android Studio是2.2 preview或者更高版本,预览拖拽设定约束需要新的布局编辑窗口,低版本AS应该可以用ConstraintLayout,但没用设置约束功能(光手写XML,为什么还用ConstraintLayout)
ConstraintLayout是一个单独的支持包,所以需要在gradle中添加引用
1 | dependencies { |
在Layout文件中引用
1 |
|
使用

在布局编辑窗口中选择Design(我几乎是第一次选择他,而不是直接去使用TextV去写XML)
约束Constraints
约束可以帮助你设定不同组件之间的位置关系,比如,这个A组件在B组件右边25dp且位于C组件下方8dp的位置。
在布局编辑窗口中,当你选中一个组件可以看到以下情况
拖拽边角的方形,可以控制组件的大小
拖拽四边的圆形,可以设置组件相对四个方向上的距离约束
拖拽下方圆角矩形,可以设置组件间的基线对齐
基本使用
当拖动大小约束时,大小会被改变
当拖动位置约束时,锚点变绿即建立约束成功
当约束建立成功后,再次点击锚点即可删除约束
设置基线约束,可以对齐文本
当然拖动并不能准确的设置约束,这个时候我们看看到右边的属性窗口
在这里你可以设置组件的相关约束和组件的相关属性
在属性窗口中,你可以看到约束的UI界面是这样的
每个约束是一个I型的图标,点击可以切换如下三个状态
Fixed:固定尺寸约束,指定组件大小
AnySize:占用可用空间
Wrap Content:包含组件内容大小
以上可以在官方示例中查看
缺点
- UI操作并不顺畅,控件经常点击不到
- 缺少等宽等约束,复杂的需求不一定能实现
- 当ConstraintLayout不是根布局时, UI操作基本不可用
注:以上可能是本人并不熟练或不够了解导致的

