Ответ
Layout — это низкоуровневая функция в Jetpack Compose, позволяющая создать кастомный лейаут с нуля. Она принимает content и измеряет/размещает его по своим правилам.
Пример:
@Composable
fun CustomLayout(
modifier: Modifier = Modifier,
content: @Composable () -> Unit
) {
Layout(
content = content,
modifier = modifier
) { measurables, constraints ->
// 1. Измеряем дочерние элементы
val placeables = measurables.map { it.measure(constraints) }
// 2. Вычисляем размер лейаута
val width = placeables.sumOf { it.width }
val height = placeables.maxOfOrNull { it.height } ?: 0
// 3. Размещаем дочерние элементы
layout(width, height) {
var x = 0
placeables.forEach { placeable ->
placeable.placeRelative(x = x, y = 0)
x += placeable.width
}
}
}
}
Здесь мы создаем горизонтальный лейаут, размещая элементы друг за другом.