Создаем портфолио за 1 месяц
К концу месяца: 4 классных проекта в вашем портфолио! Стоимость: 100$. Подробности...
7 of 502 menu
◀ ▶

Функция BoxWithConstraints

Функция BoxWithConstraints работает как Box, но приёмник лямбды content знает ограничения родителя в момент раскладки. Общее выравнивание задаёт параметр contentAlignment. Внутри лямбды доступны свойства приёмника maxWidth, maxHeight, minWidth и minHeight типа Dp.

Синтаксис

BoxWithConstraints { val side = maxWidth / 2 child(side) }

Параметры

Параметр Описание
content Лямбда с дочерними элементами. Приёмник даёт maxWidth, maxHeight, minWidth и minHeight родителя. Для выравнивания внутри области есть класс BoxScope.
contentAlignment Выравнивание дочерних элементов по умолчанию. Принимает значение класса Alignment.
propagateMinConstraints Если true, минимальные ограничения родителя передаются дочерним элементам при измерении. По умолчанию false.

Пример

Давайте зададим ширину текста половиной доступной ширины:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.width import androidx.compose.material3.Text import androidx.compose.ui.Modifier class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { BoxWithConstraints( modifier = Modifier.fillMaxSize(), ) { Text( text = "abcde", modifier = Modifier.width(maxWidth / 2), ) } } } }

На экране текст займёт половину ширины области, которую занимает BoxWithConstraints.

Пример

Давайте покажем доступную высоту вторым текстом:

import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.material3.Text import androidx.compose.ui.Modifier class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContent { BoxWithConstraints( modifier = Modifier.fillMaxSize(), ) { Column { Text(text = "abcde") Text(text = maxHeight.toString()) } } } } }

На экране под первым текстом появится строка с числом доступной высоты в dp.

Смотрите также

  • функция Box,
    которая накладывает элементы без доступа к ограничениям
  • класс Dp,
    который хранит размер, не зависящий от плотности экрана
  • класс BoxScope,
    который выравнивает дочерние элементы внутри области
  • класс LocalDensity,
    который переводит dp в пиксели экрана
← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить