Android数据绑定:在xml中设置默认可见性

时间:2018-05-11 16:35:04

标签: android android-databinding

我在recyclerview中显示项目并使用数据绑定。在xml布局中,我有这样的观点:

 <include
        android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE}"
        bind:viewmodel="@{viewmodel}"
        layout="@layout/full_station_layout"/>

它运行良好,但我有一个问题:当recyclerview初始化并将项目绑定到视图时,此布局在屏幕上闪烁一次,尽管初始值viewmodel.expandable为false。所以,我决定暂时隐藏这个布局并尝试在xml中使用默认 - 参数,如下所示:

        <include
        android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE, default=View.GONE}"
        bind:viewmodel="@{viewmodel}"
        layout="@layout/full_station_layout"/>

但出了点问题:

error: 'View' is incompatible with attribute android:visibility (attr) enum [gone=2, invisible=1, visible=0].

所以,或者我错误地使用了这个参数,或者Google从xml数据绑定规则中删除了这个关键字(我之前在Google开发人员的xml中看到了使用默认 -keyword的示例,但现在我couldn&#39; t)的

2 个答案:

答案 0 :(得分:13)

您可以在gone媒体资源中设置visibleinvisibledefault。替换为下面。

<include
        android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE, default=gone}"
        bind:viewmodel="@{viewmodel}"
        layout="@layout/full_station_layout"/>

答案 1 :(得分:0)

检查您是否已导入View类。

<data>
    <import type="android.view.View"/>
    <variable ..... />
</data>

此外,可见性默认值的默认正确语法为 default=gone ,无default=View.GONE