我有以下布局(仅留下相关部分):
<RelativeLayout>
<View android:layout_alignParentTop="true"/>
</RelativeLayout>
我尝试设置layout_alignParentTop
带有声明变量的属性<data>
块如下所示:
<data>
<variable
name="condition"
type="Boolean"/>
</data>
<RelativeLayout>
<View android:layout_alignParentTop="@{condition}"/>
</RelativeLayout>
然而,当尝试编译时,android studio 会说以下内容:
错误:无法找到参数类型为 java.lang.Boolean 的属性“android:layout_alignParentTop”的设置器。
我该如何设置layout_alignParentTop
具有数据绑定变量的属性?
我必须对此进行一些挖掘,然后我发现了一个最近一期 https://code.google.com/p/android/issues/detail?id=180666在谷歌代码中。
引用一位项目成员的话:
我们明确不支持布局属性的数据绑定,
尽管从技术上讲您可以自己添加它们。问题是
这些很容易被试图动画化的人滥用。
要为您的应用程序实现这些,请创建一个绑定适配器:
@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);
}
这尚未经过测试,但应该足以让您走上正轨。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)