【发布时间】:2023-03-03 01:26:01
【问题描述】:
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()
MainActivity.kt
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
...
setContentView(binding.root)
}
虽然布局编辑器呈现应用的正确对齐方式,但一旦在模拟器上启动,布局配置(例如使用 layout_gravity 的 LinearLayout 的 center_vertical 对齐设置)将被忽略。
ViewBinding 的实现方式是否有错误或遗漏?
【问题讨论】:
-
我更新了我的答案。
-
我的 recyclerview 也面临同样的问题。你解决了这个问题吗?
标签: android android-layout android-linearlayout android-viewbinding