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_gravity
的 LinearLayout
是被忽略的。
ViewBinding的实现方式是不是有什么不正确或缺失?
有一种可能是你的 LinearLayout
没有任何 id
.
当你在做 binding.root
它保留了一个根视图的引用,在你的例子中是LinearLayout。
根据官方文档。
如果一个模块启用了视图绑定,那么模块所包含的每个XML布局文件都会生成一个绑定类。每个绑定类都包含对根视图和所有具有ID的视图的引用。
给你的LinearLayout赋予id android:id="rootView
,重建你的项目并尝试运行。我希望,它能解决你的问题。
谢谢& 快乐编码...!
在你的 activity_main.xml
给予 id
对你的 LinearLayout