ConstraintLayout约束布局使用ConstraintSet修改某个子view

如果父View是ConstraintLayout约束布局,当修改某个view时候,直接创建ConstraintLayout.LayoutParams会有问题,没办法直接满足需求。

所有使用ConstraintSet绝对没错
ConstraintLayout约束布局使用ConstraintSet修改某个子view

具体使用步骤

 ConstraintSet set= new ConstraintSet(); 
 //获取一新的ConstraintLayout
 //mConstraintLayout 是你的当前使用的约束布局
set.clone(mConstraintLayout);
//这里是重新设置边距,当然也可以重新设置这个view的任何约束,  参数2的类型,可以点进入方法内部,看源码。
set.setMargin(R.id.id, 1,Utils.dip2px(20)); 
set.setMargin(R.id.id, 3,imageTopMare+Utils.dip2px(20));
//最后一步就是设置新的ConstraintLayout约束 这个必须设置;
set.applyTo(mConstraintLayout);

需要注意的是,当使用ConstraintSet 的时候,你的约束布局里面的所有子view,都必须有个id,不然就会报错 All children of ConstraintLayout must have ids to use ConstraintSet