ConstraintLayout constraintLayout =holder.getView(R.id.cl_item);
ConstraintSet set = new ConstraintSet();
set.clone(constraintLayout);
set.connect(R.id.cv_execution_states, ConstraintSet.TOP, R.id.tv_mode,ConstraintSet.TOP);
set.connect(R.id.cv_execution_states, ConstraintSet.BOTTOM, R.id.tv_mode, ConstraintSet.BOTTOM);
set.applyTo(constraintLayout);
遇到崩溃报错
All children of ConstraintLayout must have ids to use ConstraintSet
使用ConstraintSet时,所有ConstraintLayout内的控件都必须有ID,所有子view加上id后问题解决
打开ConstraintSet.clone 的源码,看到在有这一段话
for(int i = 0; i < count; ++i) {
View view = constraintLayout.getChildAt(i);
LayoutParams param = (LayoutParams)view.getLayoutParams();
int id = view.getId();
if(id == -1) {
throw new RuntimeException("All children of ConstraintLayout must have ids to use ConstraintSet");
}
//.....省略余下代码
}