小编war*_*ass的帖子

自定义布局 Android Compose 可测量宽度

我正在尝试在 Android 中实现自定义“行”布局,如​​下所示:

@Composable
fun CustomLayout(modifier: Modifier, content: @Composable () -> Unit){
    Layout(
        modifier = modifier,
        content = content,
    ) { measurables, constraints ->
        val placeables = measurables.map { measurable ->
          measurable.measure(constraints)
        }
        var xPos = 0

        layout(constraints.maxWidth, constraints.maxHeight) {
            placeables.forEach { placeable ->
                placeable.placeRelative(x = xPos, y = 0)
                xPos += placeable.width
            }
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

以下是此可组合项的预览:

@Preview(name = "Preview")
@Composable
fun customLayoutPreview() {
    CustomLayout(Modifier.size(1080.dp,100.dp)){
        Box(
            Modifier
                .size(32.dp, 64.dp)
                .background(Color.Red)) {

        }
        Box(
            Modifier
                .size(100.dp, 64.dp)
                .background(Color.Green)) {

        } …
Run Code Online (Sandbox Code Playgroud)

android kotlin android-jetpack android-jetpack-compose

2
推荐指数
1
解决办法
1793
查看次数