【问题标题】:ComposeView with view bindingComposeView 与视图绑定
【发布时间】:2021-11-26 23:57:12
【问题描述】:

我在我的 XML 布局文件中添加了 ComposeView。我在我的活动中使用视图绑定来扩充这个文件。当我尝试调用binding.myComposeView.setContent { ... } 时,我收到以下编译错误:Unresolved reference: setContent。当我查看生成的绑定文件时,myComposeView 的类型是View 而不是ComposeView。当我使用findViewById<ComposeView>(R.id.myComposeView).setContent { ... } 时,一切正常。为什么绑定没有正确生成?我可以做些什么来使用带有ComposeView 的视图绑定?

【问题讨论】:

    标签: android-jetpack-compose android-viewbinding


    【解决方案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 上。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      相关资源
      最近更新 更多