如何在运行时获取 Composable 的大小?

时间:2021-03-02 13:51:20

标签: android android-jetpack-compose

我以以下可组合为例:

@Composable
fun CustomCanvas(
) {
   Box(
      Modifier
        .aspectRatio(1.33f)
        .fillMaxWidth())
} 

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

为什么我想知道: 我正在尝试调整大小并将图像放置在画布上。这需要知道画布的大小。不,我不想硬编码画布的大小。如何做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以使用 onGloballyPositioned 修饰符:

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

Box(Modifier.onGloballyPositioned { coordinates ->
    size = coordinates.size})
{
   //...
}

还有 Canvas 有一个 DrawScope,它有 size 属性。

Canvas() {
    val canvasSize = size    
}