Назад к вопросам
Junior — Middle
72
Каким образом можно определить индивидуальный макет пользовательского интерфейса в Jetpack Compose?
Компании, где спрашивали
Ubic
Ответ от нейросети
sobes.tech AI
В Jetpack Compose для определения индивидуального макета пользовательского интерфейса используется функция Layout, которая позволяет самостоятельно управлять размещением и размером дочерних элементов.
Пример создания кастомного компоновщика:
@Composable
fun CustomLayout(
modifier: Modifier = Modifier,
content: @Composable () -> Unit
) {
Layout(
content = content,
modifier = modifier
) { measurables, constraints ->
// Измеряем дочерние элементы
val placeables = measurables.map { it.measure(constraints) }
// Определяем размер контейнера
val width = placeables.maxOfOrNull { it.width } ?: constraints.minWidth
val height = placeables.sumOf { it.height }
layout(width, height) {
var yPosition = 0
placeables.forEach { placeable ->
placeable.placeRelative(x = 0, y = yPosition)
yPosition += placeable.height
}
}
}
}
В этом примере дочерние элементы размещаются вертикально друг под другом. Такой подход даёт полный контроль над расположением элементов в UI.