Sobes.tech
Junior — Middle

Como pode ser determinado um layout de interface de utilizador individual em Jetpack Compose?

sobes.tech IA

Resposta da IA

No Jetpack Compose, para definir um layout personalizado de interface de utilizador, utiliza-se a função Layout, que permite gerir de forma independente o posicionamento e o tamanho dos elementos filhos.

Exemplo de criação de um compositor personalizado:

@Composable
fun CustomLayout(
    modifier: Modifier = Modifier,
    content: @Composable () -> Unit
) {
    Layout(
        content = content,
        modifier = modifier
    ) { measurables, constraints ->
        // Medir os elementos filhos
        val placeables = measurables.map { it.measure(constraints) }

        // Definir o tamanho do container
        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
            }
        }
    }
}

Neste exemplo, os elementos filhos são colocados verticalmente um abaixo do outro. Esta abordagem oferece controlo total sobre a disposição dos elementos na UI.