0x81 ConstraintLayout
Google在之前的GoogleIO大会上宣布了全新的Android布局组件——ConstraintLayout,中文名约束布局,其相关概念有点类似iOS的布局约束,我们终于也可以更好的在布局编辑器里用鼠标拖拽进行布局了。
0x82 ConstraintSet
约束布局存在于support包中,向后兼容大部分版本,对于布局的描述和更改。Google为我们提供了一套API,今天我们就来看看ConstraintSet这个类。
0x83 ConstraintSet使用
- 获取布局属性
1 | ConstraintSet applyConstraintSet = new ConstraintSet(); |
这样我们便从已经处理好的布局中取出约束属性集。
- 设置外间距
1 | applyConstraintSet.setMargin(R.id.btn_contact1, ConstraintSet.START, 0); |
该方法接受3个参数,一个操纵子View的id,一个边界描述,一个数值。
- 设置宽高
1 | applyConstraintSet.constrainWidth(R.id.btn_contact2, 500); |
该方法接受2个参数,操纵子View的id和要设置的数值。
- 设置居中
1 | applyConstraintSet.centerHorizontally(R.id.btn_contact1, R.id.cl_contact); |
上述用法设置R.id.btn_contact1
在R.id.cl_contact
中横竖居中。
- 关联关系
1 | applyConstraintSet.connect(R.id.btn_contact1, ConstraintSet.START, R.id.cl_contact, ConstraintSet.START, 0); |
方法接收5个参数,第一个和第三个是要关联的id,此处可以是子View和父View,第二个和第四个是关联边界,第5个是设定数值。
上述表示将R.id.btn_contact1
的宽度占满父布局。
- chaining
1 | chainConstraintSet.connect(R.id.btn_contact1, ConstraintSet.START, R.id.cl_contact, |
同样是关联边界,最终使用create*Chain方法创建Chain,参数分别指定链首子ViewId、链首子View位置、链尾子ViewId、链尾子View位置、Chain元素数组、配置值数组、ChainMode。
- 清除与应用
1 | applyConstraintSet.clear(R.id.btn_contact1); |
第一行是清除R.id.btn_contact1
的所有约束属性,注意包括宽高也是。
第二行是将新的约束属性应用到约束布局上。
关于ContraintSet的简单使用就这么多~