Android / Kotlin — создание двух кнопок и применение ограничений

#android #kotlin

#Android #котлин

Вопрос:

В Android / Kotlin я хотел бы динамически создавать две кнопки и добавлять ограничения между обоими (start / start и top / bottom).

Я могу ограничить две статические кнопки :

     val mainLayout = findViewById<ConstraintLayout>(R.id.constraintLayout)
    val constraintSet = ConstraintSet()
    constraintSet.clone(constraintLayout)
    constraintSet.connect(b1.id, ConstraintSet.START, b2.id, ConstraintSet.END, 0)
    constraintSet.connect(b1.id, ConstraintSet.TOP, b2.id, ConstraintSet.BOTTOM, 0)
    constraintSet.applyTo(mainLayout)
 

но не при их динамическом создании: на экране ничего не появляется.

В динамическом случае я заметил идентификаторы , где -1 для обоих …

В конце концов, моя цель — динамически создать сетку кнопок.

Спасибо!

Комментарии:

1. View по умолчанию у s нет идентификаторов. Вам нужно назначить им по одной при их создании.

Ответ №1:

Позвольте мне начать с конца. если вам нужен вид сетки, содержащий кнопки, вы в любом случае должны реализовать его с помощью RecyclerView .

Когда вы создаете кнопку, идентификатор кнопки равен -1. Вы можете ввести в него идентификатор с помощью:

 b1.id = View.generateViewId()
 

Если вы не видите кнопок, проверьте «Добавляете ли вы кнопки в MainView?» что-то вроде:

 mainLayout.addView(b1)
 

Будьте осторожны, вы должны добавить представление перед клонированием constraintLayout ConstraintSet .

Тогда, я думаю, ваш код будет работать!