我有以下布局(仅剩下相关部分):
我尝试layout_alignParentTop
使用块中声明的变量设置属性,如下所示:
但是在尝试编译时,android studio说如下:
错误:找不到参数类型为java.lang.Boolean的属性'android:layout_alignParentTop'的setter.
如何layout_alignParentTop
使用数据绑定变量设置属性?
我不得不深入研究这个问题,并在Google Code中找到了最新的问题.
引用其中一个项目成员:
我们明确地不支持布局属性的数据绑定,尽管您可以在技术上自己添加它们.问题是这些可能很容易被试图动画它们的人滥用.
要为您的应用程序实现这些,请创建绑定适配器:
@BindingAdapter("android:layout_width") public static void setLayoutWidth(View view, int width) { LayoutParams layoutParams = view.getLayoutParams(); layoutParams.width = width; view.setLayoutParams(layoutParams); }
在您的情况下,您只需要稍微调整alignParentTop
属性:
@BindingAdapter("android:layout_alignParentTop") public static void setAlignParentTop(View view, boolean alignParentTop) { RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); if(alignParentTop) { layoutParams.addRule(RelativeLayout.ALIGN_PARENT_TOP); } view.setLayoutParams(layoutParams); }
这是未经测试的,但它应该足以让您走上正确的轨道.