如何用View填充Box?

How to fill Box with View?

我正在从标准 Android 迁移到 Jetpack Compose,但我遇到了问题。我不知道如何“转换”以下实现:

标准 Android:

  1. 我调用一个函数并接收一个视图。
  2. 我使用 FrameLayout addView() 方法调用来用接收到的视图填充我的 FrameLayout

如何在作曲中做到?

在使用 FrameLayout 进行组合时意味着使用一个 Box,但我不知道如何用收到的视图填充它。

谁能告诉我正确的方法?

这里是代码:

@Composable
fun MyCard(testActivity: Activity? = null) {
    AdvertView(testActivity) { view ->
        Box(modifier = Modifier.fillMaxSize()) {
            AndroidView(factory = { view })
        }
    }
}

在显示错误的位置之后:

您可以这样做:

Box(
    modifier = Modifier.fillMaxSize()
)

只需使用 List<View> 并对其进行循环。向列表中添加元素将触发重组。

@Composable
fun MyOldFrameLayout(modifier: Modifier = Modifier, dynamicViews: List<View>) {
  Box(modifier.fillMaxSize()) {
    dynamicViews.forEach { view -> AndroidView(factory= { view }) }
  }
}

根据您在屏幕截图中提供的内容

我建议您将屏幕截图重构为:

@Composable fun MyCard(onClick: () -> Unit) {
  Box(modifier.fillMaxSize()) {
    AndroidView(factory= { context -> AdvertView(context) { onClick() }  })
  }
}