我是第一次使用数据绑定。一切都按预期工作,直到我决定为横向模式创建单独的布局。现在,我有两个主要活动的布局,分别用于纵向和横向模式:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<!--Some Views-->
</LinearLayout>
</layout>
activity_main.xml(土地(:
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
<android.support.constraint.ConstraintLayout
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--Some Views-->
</android.support.constraint.ConstraintLayout>
</layout>
问题是我无法使用binding.mainLayout
作为ViewGroup
,因为它在ActivityMainBinding.java
中声明为视图:
public final android.view.View mainLayout;
难道不应该宣布为ViewGroup
,看到LinearLayout
和ConstraintLayout
都直接扩展ViewGroup
吗?我做错了什么吗?这背后是否有合乎逻辑的原因,或者只是疏忽?
与 ActivityMaindBinding 一起,您应该获得自动生成的默认和土地布局实现。它们应该分别称为ActivityMainBindingImpl和ActivityMainBindingLandImpl。
在运行时中,您可以使用 instanceof 运算符检查哪个实现正在使用中,并使用正确的类型访问 mainLayout。