我在布局中的ConstraintLayout中定义了两个组。我希望他们的能见度彼此相反。因此,如果group1可见,则group2应该消失,反之亦然。我正在尝试使用数据绑定来实现这一目标。
<data>
<import type="android.view.View" />
</data>
<android.support.constraint.Group
android:id="@+id/group1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="visible"
app:constraint_referenced_ids="..." />
<android.support.constraint.Group
android:id="@+id/group2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:visibility="@{group1.visibility == View.VISIBLE? View.GONE : View.VISIBLE}"
app:constraint_referenced_ids="..." />
但是我收到的编译错误是:
**** /数据绑定错误****消息:无法解析双向绑定属性&#39; visibility&#39;在类型&#39; android.support.constraint.Group&#39;
我做错了什么?
答案 0 :(得分:1)
问题是android:visibility
不支持双向数据绑定。当可见性发生变化时,没有事件要通知,因此无法在属性更新时通知。
答案 1 :(得分:0)
我不知道为什么会发生错误,但这对我有用:
group1.getVisibility() == View.VISIBLE
话虽如此,我无法让constraint.Group
按照宣传的方式工作。另外,为了使它们彼此相对,假设你在group1
的可见性中需要类似的逻辑,但那将是循环的。为什么不将这些绑定到控制何时应该可见的ViewModel?