Программное создание ConstraintLayout и позиционирование
16.01.2025
Для создания контейнера в коде Java применяется одноименный класс ConstraintLayout. Для создания объекта используется конструктор, принимающий значения для ширины и высоты элемента:
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.WRAP_CONTENT,
ConstraintLayout.LayoutParams.WRAP_CONTENT
);
Первый параметр: ширина элемента.
Второй параметр: высота элемента.
ConstraintLayout.LayoutParams.WRAP_CONTENT указывает, что размеры элемента соответствуют его содержимому. Также можно использовать ConstraintLayout.LayoutParams.MATCH_CONSTRAINT, аналогичный 0dp в атрибутах layout_width и layout_height, который растягивает элемент до размеров контейнера.
Пример с точными размерами
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(
ConstraintLayout.LayoutParams.MATCH_CONSTRAINT, 200
);
Настройка позиционирования
Для управления позиционированием используется класс ConstraintLayout.LayoutParams. Ниже перечислены его основные поля для установки расположения:
baselineToBaseline — базовая линия элемента относительно другого.
bottomToBottom — нижняя граница элемента по нижней границе другого.
bottomToTop — нижняя граница элемента по верхней границе другого.
leftToLeft — левая граница элемента по левой границе другого.
leftToRight — левая граница элемента по правой границе другого.
rightToLeft — правая граница элемента по левой границе другого.
rightToRight — правая граница элемента по правой границе другого.
startToEnd, startToStart, endToEnd, endToStart — выравнивание по началу или завершению элемента.
topToBottom, topToTop — верхняя граница элемента относительно другого.
Значением для этих полей служит id элемента. Для позиционирования относительно контейнера используется ConstraintLayout.LayoutParams.PARENT_ID.
Пример: позиционирование в левом верхнем углу контейнера