我已经在我的自定义控件中设置了自定义属性,就像这样:
<declare-styleable name="MyControl" tools:ignore="ResourceName">
<attr name="ms_hide_arrow" format="boolean"/>
</declare-styleable>
然后,我的控件被用在我的应用程序xml布局中,这个可以工作:
<MyControl
.................
app:ms_hide_arrow="false"
/>
但如果我尝试使用数据绑定来提供值,就像这样:
<MyControl
.................
app:ms_hide_arrow="@{user.hideArrow}"
/>
我收到了错误信息:
Error:(183, 34) 找不到参数类型为布尔值的属性'app:ms_hide_arrow'的setter方法...
我错过了什么吗?如果我使用标准的Android控件,例如标准的spinner,我可以使用数据绑定设置其属性而没有任何问题。
我需要做些什么才能使我的自定义控件能够与数据绑定一起使用呢?
[添加] 通过像这样添加setter方法解决了此问题:
public void setMs_hide_arrow(boolean v)
{
hideArrow = v;
}
然而,当我尝试使用双向绑定时仍然存在问题,所以在xml中我设置了:
app:ms_hide_arrow="@={user.hideArrow}
"
最后的getter方法:
public boolean getMs_hide_arrow()
{
return hideArrow ;
}
我收到一个有关缺少getter的错误信息:
错误:(171,9)找不到属性'app:ms_hide_arrow'的获取器,其值类型为布尔,在...上
获取器已经存在了,怎么回事?
MyControl
中的setMsHideArrow(boolean)
方法是什么? - pskink