无法解析类型'android.support.constraint.Group'上的双向绑定属性'visibility'

问题描述 投票:1回答:2

我在布局中的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="..." />

但我得到一个编译错误,说:

**** /数据绑定错误****消息:无法解析类型'android.support.constraint.Group'上的双向绑定属性'visibility'

我究竟做错了什么?

android android-databinding android-constraintlayout
2个回答
1
投票

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


0
投票

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

    group1.getVisibility() == View.VISIBLE

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

© www.soinside.com 2019 - 2024. All rights reserved.