在《Android-DataBinding(一)基础》一文中对 DataBinding 的接入和使用进行了介绍。本文将会针对 DataBinding 中一些琐碎的知识点进行介绍,比如:Class 属性、Default 属性、Resource 引用等,这些属性被使用的频率或许不是很高,但特定的情况下却会起到意想不到的作用。下面将会针对这些属性进行逐一的讲解。
1. Data 标签的 Class 属性
默认情况下,系统会根据布局文件的名称生成对应的 ViewDataBinding
子类,帮助我们操作 XML
中绑定的数据,如下所示:
1 | package com.sunzn.data; |
如果你想改变默认的 ViewDataBinding
子类名称或位置,这时就可以通过 class
属性完成命名和位置的变更,如下所示:
1 | <data class="ActivityUserBinding"> |
1 | package com.sunzn.data; |
上面通过 class
属性完成了命名的变更。如需改变类所属的包名,只需在类的名称前增加对应的包名即可,如下所示:
1 | <data class="com.sunzn.bind.ActivityUserBinding"> |
1 | package com.sunzn.data; |
2. Default 属性
通常情况下,我们可以通过 Android Studio 来预览布局文件的展示效果,例如预览 TextView
的文字颜色、大小等。但是使用了 DataBinding
布局预览就会变得极不方便,所以 DataBinding
提供了设置默认值的功能。如下所示:
1 | <androidx.appcompat.widget.AppCompatTextView |
✦ 注意: 这里的 default 属性,是为布局预览而提供的,项目运行后并不会显示,其作用和 tools:text=”预览” 类似。语法就是在完整的属性值最后用英文逗号隔开,加上 default=xxxx,如果预览的文字包含空格,则需要用反引号进行包裹。
该属性还可以对控件的 visibility
默认值进行配置,同时也可以结合三元运算符进行动态控制。如下所示:
1 |
|
✦ 注意: 如果布局文件中使用到了 View 类,则需要在 data 标签内导入 View 类;另外,需要特别注意 default=gone 的写法。
3. Resource 引用
DataBinding 可以对各种资源文件进行引用,比如可以引用 values/strings.xml
下各种格式的字符资源。如下所示:
1 | <!--strings.xml--> |
1 | <androidx.appcompat.widget.AppCompatTextView |
1 | <androidx.appcompat.widget.AppCompatTextView |
除了可以引用字符资源,还可引用 values/dimens.xml
下的尺寸资源。如下所示:
1 | <!--dimens.xml--> |
1 | <androidx.appcompat.widget.AppCompatTextView |
✦ 注意: 经测试 margin 属性不支持这种形式的赋值,现阶段仅支持 padding 及 paddingStart 等属性。
除了可以引用尺寸资源,还可引用 drawable
下的图片以及 XML 资源。如下所示:
1 | <androidx.appcompat.widget.AppCompatTextView |
✦ 注意: 经测试 mipmap 下的资源文件不支持这种形式的赋值,现阶段只支持 drawable 下的资源文件。
4. 点击事件
点击事件的绑定可以在 <data>
节点下导入系统默认的 OnClickListener
类,然后将其绑定到控件上。这种方式的绑定需要在 OnClickListener
的实现类里对被点击控件的 ID 进行区分,使用方式和之前并无多大区别。如下所示:
1 |
|
1 | package com.sunzn.data; |
点击事件的另一种绑定方式是在 <data>
节点下导入点击方法的持有类,然后将其绑定到控件上。这种方式的绑定无需对被点击控件的 ID 进行区分,因为控件的 onClick
属性直接指向了具体的方法,所以在一定程度上简化了传参。如下所示:
1 |
|
1 | package com.sunzn.data; |