gpt4 book ai didi

android - 在谷歌地图中使用可组合而不是标记?

转载 作者:行者123 更新时间:2023-12-05 00:02:08 24 4
gpt4 key购买 nike

我知道可以在 Google map 中使用自定义 View 而不是基本 map 标记来执行 this answer 中所述的操作。 .我很好奇是否可以使用 Compose 实现类似的效果?
由于ComposeView是最后一个类,不能直接扩展,所以我想有一个 FrameLayout可以将其添加为 child 。尽管这似乎导致了竞争条件,因为可组合的绘制与普通的 android View 略有不同。 s。

class MapMarkerView : FrameLayout {

constructor(context: Context) : super(context) {
initView()
}

constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) {
initView()
}

private fun initView() {
val composeView = ComposeView(context).apply {
layoutParams = LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)
}
composeView.setContent {
// this runs asynchronously making the the bitmap generation not include composable at runtime?
Text(text = "2345", modifier = Modifier.background(Color.Green, RoundedCornerShape(4.dp)))
}
addView(composeView)
}

}
我读过的大多数文章都有一些回调函数来生成像 this 这样的位图。在每个 View 都是动态生成的并且需要立即为 map 转换为位图的用例中,这不一定适用。

最佳答案

MapMarkerView您尝试创建的是 ViewGroup 的间接子代. ComposeView也是 ViewGroup 的间接子代这意味着您可以直接替换 ComposeView在您打算使用此类的地方。 ComposeView class 并不意味着被子类化。作为开发人员,您真正需要关心的唯一事情是它的setContent。方法。

val composeView: View = ComposeView(context).apply{
setContent {
Text(text = "2345", modifier = Modifier.background(Color.Green, RoundedCornerShape(4.dp)))
}
}

现在您可以替换 MapMarkerView有了这个 composeView在您的代码中,甚至在任何有 View 的位置使用它或者它的任何子类都是必需的。

关于android - 在谷歌地图中使用可组合而不是标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70659115/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com