Jetpack Compose - 当宽度增加时行剪裁儿童

时间:2021-07-08 06:11:22

标签: android-jetpack-compose android-jetpack-compose-list

在右侧,我有一个组合项列表,每个项目都在一行中,所有项目都在一个列中

所有的孩子都被剪裁以适应我不想要的屏幕,我希望这些项目即使在屏幕之外也能完全呈现,因为我上面有一个可缩放的容器

正如你所看到的文本字段中的文本是如何垂直排列在一行中而不是扩展宽度,这就是问题

enter image description here

代码:

Row(
        modifier = modifier.zIndex(3f),
        verticalAlignment = Alignment.CenterVertically,
        horizontalArrangement = Arrangement.Center,
    ) {
        SimpleNodesList(
            modifier = Modifier.padding(8.dp),
            parentNode = state.center,
            nodes = state.center.left,
            renderRight = false,
        )

        SimpleNode(node = state.center, parentNode = null)

        SimpleNodesList(
            modifier = Modifier.padding(8.dp),
            parentNode = state.center,
            nodes = state.center.right,
            renderLeft = false
        )
    }

简单节点列表是一列行,我左边一列右边一列,如果左列的宽度增加,右行会被屏幕剪掉

2 个答案:

答案 0 :(得分:1)

如果您对文本使用硬编码宽度,则在每个容器上应用 Modifier.wrapContentSize() 可能会起作用

答案 1 :(得分:0)

使用此修饰符可以完成行的工作,在我的情况下,我也需要此布局修饰符,wrapContentSize(unbounded = true) 正在工作,但由于某种原因,子级无法在缩放容器的边界之外点击!

我还必须创建一个可缩放修饰符而不是使用可缩放框,因此可缩放触摸事件将在 this 可组合而不是父级上调度!

modifier = Modifier
        .layout { measurable, constraints ->
            val r =
                measurable.measure(constraints = constraints.copy(maxWidth = Constraints.Infinity))
            layout(r.measuredWidth, r.measuredHeight, placementBlock = {
                r.placeWithLayer(0, 0, 0f) {

                }
            })
        }
        .wrapContentSize(unbounded = true)