所以我想有一个盒子作为一个窗口,其中有另一个比最外面的盒子大的盒子。然后我想让内框可拖动,这样我就可以在最外面的框内移动它。
我的代码是这样的:
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
,否则内容将无法按预期剪切