无法解析双向绑定属性的可见性'在类型' android.support.constraint.Group'

时间:2018-01-03 12:36:50

标签: android android-databinding android-constraintlayout

我在布局中的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;

我做错了什么?

2 个答案:

答案 0 :(得分:1)

问题是android:visibility不支持双向数据绑定。当可见性发生变化时,没有事件要通知,因此无法在属性更新时通知。

答案 1 :(得分:0)

我不知道为什么会发生错误,但这对我有用:

    group1.getVisibility() == View.VISIBLE

话虽如此,我无法让constraint.Group按照宣传的方式工作。另外,为了使它们彼此相对,假设你在group1的可见性中需要类似的逻辑,但那将是循环的。为什么不将这些绑定到控制何时应该可见的ViewModel?