如何用View填充Box?
How to fill Box with View?
我正在从标准 Android 迁移到 Jetpack Compose,但我遇到了问题。我不知道如何“转换”以下实现:
标准 Android:
- 我调用一个函数并接收一个视图。
- 我使用 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() } })
}
}
我正在从标准 Android 迁移到 Jetpack Compose,但我遇到了问题。我不知道如何“转换”以下实现:
标准 Android:
- 我调用一个函数并接收一个视图。
- 我使用 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() } })
}
}