使用方法
//获取constraintLayout 容器里的原先的约束条件
val constraintSet = ConstraintSet().apply { this.clone(cl_container) }
//用两个控件的id添加添加约束条件
constraintSet.connect(tvTitle.id, ConstraintSet.START, cl_container.id , ConstraintSet.START)
//应用到布局的约束布局中
constraintSet.applyTo(cl_container)
注意事项
1.简单归简单,但是也容易犯错。在此mark一下
比如我想根据一个map的内容动态添加一个 title: value这样的布局:
这时候就要注意:
每次循环时都要用constraintSet.clone()方法获取原来的约束条件,即不能够把这个方法调用放到循环外,然后再拿他的引用在循环里调用...不然每一次新的循环都会把上一次的约束条件覆盖掉。
错误演示:
val constraintSet = ConstraintSet().apply { this.clone(cl_container) }
map.forEach { entry ->
//每次循环拿到的其实是布局xml文件里的约束条件,而不是每次动态添加进去后新的约束条件
constraintSet.connect(tvTitle.id, ConstraintSet.START, cl_container.id , ConstraintSet.START)
applyTo(cl_container)
}
2.constrainSet的获取一定要