具有视图绑定的 ComposeView
ComposeView with view binding
我在 XML 布局文件中添加了 ComposeView
。我使用视图绑定在我的 Activity 中扩充此文件。当我尝试调用 binding.myComposeView.setContent { ... }
时,出现以下编译错误:Unresolved reference: setContent
。当我查看生成的绑定文件时,myComposeView
的类型是 View
而不是 ComposeView
。当我使用 findViewById<ComposeView>(R.id.myComposeView).setContent { ... }
时,一切正常。为什么绑定没有正确生成?如何使用 ComposeView
的视图绑定?
可能是您 activity 的 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")
}
}
}
原来我有两个相同布局的版本:纵向和横向。我通过将 LinearLayout
替换为 ComposeView
将肖像转换为 Compose。但是,在水平布局中 myComposeView
仍然是 LinearLayout
。这就是为什么创建的视图绑定 class 具有类型 View
的字段 myComposeView
而不是 ComposeView
。相同id的视图在两个布局版本中有不同的类型。
我在 XML 布局文件中添加了 ComposeView
。我使用视图绑定在我的 Activity 中扩充此文件。当我尝试调用 binding.myComposeView.setContent { ... }
时,出现以下编译错误:Unresolved reference: setContent
。当我查看生成的绑定文件时,myComposeView
的类型是 View
而不是 ComposeView
。当我使用 findViewById<ComposeView>(R.id.myComposeView).setContent { ... }
时,一切正常。为什么绑定没有正确生成?如何使用 ComposeView
的视图绑定?
可能是您 activity 的 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")
}
}
}
原来我有两个相同布局的版本:纵向和横向。我通过将 LinearLayout
替换为 ComposeView
将肖像转换为 Compose。但是,在水平布局中 myComposeView
仍然是 LinearLayout
。这就是为什么创建的视图绑定 class 具有类型 View
的字段 myComposeView
而不是 ComposeView
。相同id的视图在两个布局版本中有不同的类型。