如何在Android布局中按值而不是名称设置枚举属性?
我有一个自定义视图,其中包含另一个自定义视图。等级制度:
MyOuterView
->MyInnerView
MyInnerView
具有枚举属性,如下所示:
<attr name="myAttr" format="enum">
<enum name="foo" value="0"/>
<enum name="bar" value="1"/>
</attr>
因此,我可以在 XML 中实例化该组件,如下所示:MyOuterView
<com.example.MyInnerView
....
app:myAttr="foo"/>
这当然有效。为自定义本身提供了一个参数。基于这个参数,我想设置 .MyOuterView
MyInnerView
希望的行为是,我可以像这样使用数据绑定:
<com.example.MyInnerView
....
app:myAttr="@{data.getMyAttr()}"/>
其中看起来像:getMyAttr()
public int getMyAttr() {
return myAttr; // returns 0 or 1
}
结果是编译问题。
/ 数据绑定错误 ****msg:在 com.example.MyInnerView 上找不到参数类型为 int 的属性“app:myAttr”的 setter
所以显然我不能按值设置枚举,只能按名称设置枚举。除了以编程方式创建之外,还有什么想法吗?请注意,我无法更改。MyInnerView
MyInnerView