如果需要修改组件大小可以使用ConstraintLayout.LayoutParams
ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams(width,height);
holder.catView.setLayoutParams(paramsView);
但是有个问题,这样修改完父布局后,子布局与父布局间的位置关系好像不会更新,必须使ConstraintLayout.MarginLayoutParams,
不过我是用这个方法也没成功,不知道为啥
ConstraintLayout.MarginLayoutParams marginLayoutParams = new ConstraintLayout.MarginLayoutParams(((ConstraintLayout.LayoutParams)holder.catName.getLayoutParams()));
marginLayoutParams.setMargins(5,height,0,0);
marginLayoutParams.setMarginStart(height);
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(marginLayoutParams);
layoutParams.height = (int)(height*0.2);
layoutParams.width = width;
holder.catName.setLayoutParams(layoutParams);
上面的代码并没有修改margin,网上找得方法试了也没有,不知道为啥会这样
于是就用了ConstraintSet,这个还是好用的
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone((ConstraintLayout) holder.catView);
constraintSet.setMargin(R.id.cat_name,ConstraintSet.TOP,height);
constraintSet.applyTo((ConstraintLayout) holder.catView);
这里的如果要在原来的布局上加入或修改限制一定要用clone,否则applyTo会直接用新的布局覆盖旧的,导致有一些东西丢失(applyTo是覆盖旧布局,而不是在旧布局上添加)
不知道为啥写android总是有一些这种简单问题卡几个小时,头大