GoodDay всех.
Я пытаюсь добавить кнопку программно к ConstraintLayout
и установить ConstraintSet
для такой кнопки.Проблема возникает, когда я пытаюсь закрыть набор ограничений из макета, поскольку добавленная кнопка не имеет идентификатора.
Button button = new Button(this);
ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams(250, ConstraintLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(15,15,15,15);
button.setLayoutParams(params);
button.setText(returnObject.getFunction());
button.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
button.setTextColor(R.drawable.custom_button_color);
button.setBackgroundResource(R.drawable.custom_button);
ConstraintLayout container = findViewById(R.id.highLevelContainer);
container.addView(button);
ConstraintSet constraintSet = new ConstraintSet();
constraintSet.clone(container); // Here I get the error
constraintSet.connect(button.getId(), ConstraintSet.END , container.getId(), ConstraintSet.END,0);
constraintSet.connect(button.getId(), ConstraintSet.START, container.getId(),ConstraintSet.START,0);
constraintSet.connect(button.getId(), ConstraintSet.TOP, container.getId(), ConstraintSet.TOP);
constraintSet.applyTo(container);
Это сгенерированная ошибка на консоли:
java.lang.RuntimeException: All children of ConstraintLayout must have ids to use ConstraintSet
at android.support.constraint.ConstraintSet.clone
Я хотел бы избежать назначения случайного числа кнопке в качестве идентификатора, так как она создается в цикле.Есть идеи как это исправить?