Я хочу добавить 2 кнопки в ConstraintLayout. Мой текущий код выглядит следующим образом:ConstraintLayout: Как добавить несколько видов программно?
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.activity_main);
ConstraintSet set = new ConstraintSet();
set.clone(layout);
//Button 1:
Button button = new Button(this);
button.setText("Hello");
layout.addView(button);
set.connect(button.getId(), ConstraintSet.LEFT, layout.getId(), ConstraintSet.LEFT, 0);
set.connect(button.getId(), ConstraintSet.RIGHT, layout.getId(), ConstraintSet.RIGHT, 0);
set.connect(button.getId(), ConstraintSet.BOTTOM, layout.getId(), ConstraintSet.BOTTOM, 0);
set.constrainWidth(button.getId(), ConstraintSet.MATCH_CONSTRAINT);
set.constrainHeight(button.getId(), 200);
set.applyTo(layout);
//Button 2:
Button newButton = new Button(this);
newButton.setText("Yeeey");
layout.addView(newButton);
set.connect(newButton.getId(), ConstraintSet.BOTTOM, button.getId(), ConstraintSet.TOP, 0);
set.connect(newButton.getId(), ConstraintSet.LEFT, button.getId(), ConstraintSet.LEFT, 0);
set.connect(newButton.getId(), ConstraintSet.RIGHT, button.getId(), ConstraintSet.RIGHT, 0);
set.constrainHeight(newButton.getId(), 200);
set.applyTo(layout);
}
Но я получаю только 1 видимую кнопку (другой, вероятно, скрывается за этого), и он находится в верхнем левом углу экрана. Предполагается, что в нижней части экрана есть две кнопки, связанные друг с другом.
Что я здесь делаю неправильно?
Желаемый результат:
Отлично. Это рабочий код. Я вижу, что вы добавили «button.setID (100)»; и изменил «layout.getId()» на «ConstraintSet.PARENT_ID». Не могли бы вы объяснить мне, почему это заставило его работать? – Einar
Мы хотим установить нашу кнопку в нижней части родительского макета, поэтому использование «ConstraintSet.PARENT_ID» более подходит и при установке newButton в верхней части кнопки я использовал код перед добавлением button.setId(), и это не было давая мне идеальный результат, поэтому я должен установить id с помощью java-кода. –
Я вижу. Спасибо. Для других, читающих эти комментарии: я напечатал содержимое .getId() для каждой кнопки. Если .setId() не используется, то он по умолчанию присваивает значение ID -1. Это означает, что все ваши кнопки имеют идентификатор -1. В этом случае ваш set.connect() не сможет отличить одну кнопку от другой. – Einar