Android XML中能否在条件语句内引用视图自身属性实现动态修改?
问题解答
你想要的直接在XML内绑定当前视图自身属性的需求完全可以实现,仅需调整一下表达式写法即可:
Android Data Binding 内置了view关键字,专门用于指代当前绑定表达式所在的视图实例,你直接用这个关键字调用自身属性就可以正常运行:
android:hint="@{view.isFocused ? 'right' : 'left'}"
原写法报错原因
- 直接写
isFocused会报错,是因为Data Binding表达式默认只会在<data>标签中定义的变量、导入的类静态成员范围内检索标识符,不会默认指向当前视图本身 this关键字在Data Binding的XML表达式中没有指代当前视图的语义,所以this.isFocused的写法也无法识别
补充说明
- 该写法不需要额外做配置,不需要在
<data>标签中导入View类、也不需要在业务代码中定义额外的绑定变量 - 所有View类公开的属性都可以通过这个方式引用,比如
view.isEnabled、view.isSelected、view.visibility等都可以直接用于表达式逻辑
内容的提问来源于stack exchange,提问作者Haseeb Hassan Asif
相关产品推荐
相关产品推荐

