【发布时间】:2015-10-20 09:13:26
【问题描述】:
我正在使用Android databinding library 并尝试将它与包含的布局一起使用。
我的代码是这样的:
activity_main.xml
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:bind="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id = "@+id/linearLayout">
<include
layout="@layout/view" />
</LinearLayout>
</layout>
view.xml
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id = "@+id/myView">
</View>
MainActivity.java
public MainActivity extends AppCompatActivity{
private ActivityMainBinding mBinding;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mBinding = DataBindingUtil.setContentView(this, R.layout.activity_main);
LinearLayout layout = mBinding.linearLayout; // this field is visible
View myView = mBinding.myView // THIS FIELD IS NOT VISIBLE
}
}
正如我在 cmets 中所写的,在“包含”布局中声明的视图 myView 是不可见的。如果我用 view.xml 中的实际代码替换 ,则 mBinding.myView 变得可见,原因似乎是包含。
官方文档仅说明
“数据绑定不支持包含作为合并元素的直接子元素。” 但在我的情况下,View 是 LinearLayout 的子级,它不是直接子级..
有什么提示吗?
【问题讨论】:
标签: android xml android-layout data-binding