Android ViewBinding无法渲染LinearLayout配置。

问题描述 投票:1回答:1

ViewBinding的实现无法为 LinearLayout 在我的代码中使用,而同样的布局与旧技术的 findViewById()

我已经将gradle设置为使用ViewBinding。

android {
    ...
    buildFeatures {
        viewBinding = true
}

下面是活动中使用了 LinearLayout

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:orientation="vertical"
    tools:context=".MainActivity">

  <ImageView
        ... />

  <Button
        ... />

</LinearLayout>

对应的Kotlin类包括绑定实例,其根视图传递给了 setContentView()

主活动.kt

private lateinit var binding: ActivityMainBinding

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    binding = ActivityMainBinding.inflate(layoutInflater)
    ...

    setContentView(binding.root)
}

当布局编辑器渲染应用程序的正确对齐方式时,一旦它被启动到模拟器上,布局配置如 center_vertical 对齐集使用 layout_gravityLinearLayout 是被忽略的。

ViewBinding的实现方式是不是有什么不正确或缺失?

android android-layout android-linearlayout android-viewbinding
1个回答
0
投票

有一种可能是你的 LinearLayout 没有任何 id.

当你在做 binding.root 它保留了一个根视图的引用,在你的例子中是LinearLayout。

根据官方文档。

如果一个模块启用了视图绑定,那么模块所包含的每个XML布局文件都会生成一个绑定类。每个绑定类都包含对根视图和所有具有ID的视图的引用。

给你的LinearLayout赋予id android:id="rootView,重建你的项目并尝试运行。我希望,它能解决你的问题。

谢谢& 快乐编码...!


0
投票

在你的 activity_main.xml 给予 id 对你的 LinearLayout

© www.soinside.com 2019 - 2024. All rights reserved.