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

Ale*_*alo 7 android android-databinding

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

 <include
        android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE}"
        bind:viewmodel="@{viewmodel}"
        layout="@layout/full_station_layout"/>
Run Code Online (Sandbox Code Playgroud)

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

        <include
        android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE, default=View.GONE}"
        bind:viewmodel="@{viewmodel}"
        layout="@layout/full_station_layout"/>
Run Code Online (Sandbox Code Playgroud)

但出了点问题:

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

所以,我还是不正确地使用此参数或谷歌的XML数据绑定规则中移除这个关键字(我见过的例子使用的默认 -keyword在谷歌开发的XML,但现在我不能)

Khe*_*raj 22

您可以设置gone,visible,invisibledefault财产.替换为下面.

<include
        android:visibility="@{viewmodel.expandable ? View.VISIBLE : View.GONE, default=gone}"
        bind:viewmodel="@{viewmodel}"
        layout="@layout/full_station_layout"/>
Run Code Online (Sandbox Code Playgroud)


jan*_*sky 5

检查您是否已经导入了 View 类。

<data>
    <import type="android.view.View"/>
    <variable ..... />
</data>
Run Code Online (Sandbox Code Playgroud)

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