databinding中的layout include¶
更新日期 2020-4-20
- 2020-4-20 创建文档
<include>
标签可以实现在一个layout中引用另一个layout的布局。
对于有着相同模块的多个layout来说,可以把通用的部分抽出来成为一个公共layout。
使用方法¶
使用databinding后,在layout中可能会有variable
。我们是可以把变量传递进去的。
首先来看我们的公共layout common.xml
<?xml version="1.0" encoding="utf-8"?>
<layout>
<data>
<variable
name="viewModel"
type="com.rustfisher.t.vm" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:binding="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<!-- 公共 -->
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
common.xml
中有一个变量viewModel
,类型是com.rustfisher.t.vm
。
在其他layout中include这个layout。需要把外围的vm变量传递进去,使用app:viewModel="@{viewModel}
标签。
<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:binding="http://schemas.android.com/tools">
<data>
<variable
name="viewModel"
type="com.rustfisher.t.vm" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<include
android:id="@+id/common_layout"
layout="@layout/common"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:viewModel="@{viewModel}" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
使用场景¶
使用场景一个是上文描述的,不同layout引用同一个公共layout。
另外一个场景,我们可基于此法实现屏幕适配。
例如在layout
目录和layout-w600dp
目录中都有common.xml
。
在手机和平板我们可以实现不同的排版。
本站说明
一起在知识的海洋里呛水吧。广告内容与本站无关。如果喜欢本站内容,欢迎投喂作者,谢谢支持服务器。如有疑问和建议,欢迎在下方评论~