Jetpack Compose将较大尺寸的可组合件放在另一个可组合件中



所以我想有一个盒子作为一个窗口,其中有另一个比最外面的盒子大的盒子。然后我想让内框可拖动,这样我就可以在最外面的框内移动它。

我的代码是这样的:

Box(modifier = Modifier
.size(100f.dp, 100f.dp)
.border(2f.dp, Color.Black, RectangleShape)
.clipToBounds()
){
val offsetX = remember { mutableStateOf(0f) }
val offsetY = remember { mutableStateOf(0f) }
Box(modifier = Modifier
.offset(offsetX.value.dp, offsetY.value.dp)
.size(600f.dp, 700f.dp)
.background(Color.Blue) //DEBUG
.pointerInput(Unit) {
detectDragGestures { change, dragAmount ->
change.consumeAllChanges()
offsetX.value += dragAmount.x
offsetY.value += dragAmount.y
}
}
){
//Contents of inner box
}
}

现在的问题是,里面的盒子是里面的盒子仍然只有外面的盒子那么大。所以我可以拖动内框,但是看到内蓝框的背景宽度和高度只和外框一样。

是否有另一个修饰符可以使用,使更大的可组合在其他较小的可组合中?

经过长时间的尝试(我讨厌GUI…),这是我的解决方案:

如果在父可组合对象中设置了.wrapContentSize(unbounded = true),则子可组合对象可以具有更大的大小。

但是一定要在之后设置这个修饰符.clipToBounds,否则内容将无法按预期剪切

相关内容

  • 没有找到相关文章

最新更新