如何在运行时获取可组合项的大小?

use*_*620 22 android android-jetpack-compose android-jetpack-compose-layout

我以以下可组合项为例:

@Composable
fun CustomCanvas(
) {
   Box(
      Modifier
        .aspectRatio(1.33f)
        .fillMaxWidth())
} 
Run Code Online (Sandbox Code Playgroud)

我如何知道这个物体合成后的大小?

为什么我想知道:我正在尝试调整图像大小并将图像放置在画布上。这需要知道画布的大小。不,我不想对画布的大小进行硬编码。这个怎么做?

Gab*_*tti 38

您可以使用onGloballyPositioned修饰符:

var size by remember { mutableStateOf(IntSize.Zero) }

Box(Modifier.onGloballyPositioned { coordinates ->
    size = coordinates.size
}) {
   //...
}
Run Code Online (Sandbox Code Playgroud)

还有Canvas一个DrawScope具有属性size

Canvas() {
    val canvasSize = size    
}
Run Code Online (Sandbox Code Playgroud)