ComposeView 与视图绑定
Posted
技术标签:
【中文标题】ComposeView 与视图绑定【英文标题】:ComposeView with view binding 【发布时间】:2021-11-26 23:57:12 【问题描述】:我在我的 XML 布局文件中添加了 ComposeView
。我在我的活动中使用视图绑定来扩充这个文件。当我尝试调用binding.myComposeView.setContent ...
时,我收到以下编译错误:Unresolved reference: setContent
。当我查看生成的绑定文件时,myComposeView
的类型是View
而不是ComposeView
。当我使用findViewById<ComposeView>(R.id.myComposeView).setContent ...
时,一切正常。为什么绑定没有正确生成?我可以做些什么来使用带有ComposeView
的视图绑定?
【问题讨论】:
【参考方案1】:事实证明,我有两个版本的相同布局:纵向和横向。我通过用ComposeView
替换LinearLayout
将肖像转换为Compose。但是,在水平布局中myComposeView
仍然是LinearLayout
。这就是为什么创建的视图绑定类有一个类型为View
的字段myComposeView
而不是ComposeView
。相同 id 的视图在两个布局版本中有不同的类型。
【讨论】:
【参考方案2】:可能在您的活动的 onCreate 中设置绑定的方式存在问题。您是否使用以下代码行中的内容? :
override fun onCreate(savedInstanceState: Bundle?)
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
binding.composeView.setContent
MaterialTheme
Text(text = "Hello World")
【讨论】:
这或多或少是我的做法,生成的绑定文件中composeView的类型是View而不是ComposeView。所有其他视图正常工作。问题出在 ComposeViews 上。以上是关于ComposeView 与视图绑定的主要内容,如果未能解决你的问题,请参考以下文章
使用 compose 在 AndroidView 中使用片段时崩溃