Все ваши макеты должны иметь одинаковое количество просмотров и идентичные идентификаторы.
Если вы это сделаете, то можете иметь ConstraintLayout
в качестве корневого макета и создавать клоны макета с дочерними элементами, расположенными по-разному. Затем, основываясь на настройке, вы примените ограничения от конкретного макета к основному макету.
Проверьте это для справки
Context context = this;
mConstraintSet2.clone(context, R.layout.state2); // get constraints from layout
setContentView(R.layout.state1);
mConstraintLayout = (ConstraintLayout) findViewById(R.id.activity_main);
mConstraintSet2.applyTo(mConstraintLayout)