web-dev-qa-db-fra.com

Android liaison de données: définir la visibilité par défaut en xml

Je montre les articles dans recyclerview et j'utilise databinding. Dans la disposition xml, j'ai une telle vue:

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

Cela fonctionne bien, mais j'ai un problème: lors de l'initialisation du recyclage et de la liaison des éléments aux vues, cette disposition clignote une fois à l'écran, bien que la valeur initiale viewmodel.expandable soit fausse. J'ai donc décidé de masquer temporairement cette disposition et j'ai essayé d'utiliser le paramètre par défaut - en xml comme ceci:

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

Mais quelque chose s'est mal passé:

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

Donc, ou j'utilise incorrectement ce paramètre ou Google supprime ce mot-clé des règles de liaison de données xml (j'ai vu un exemple d'utilisation par défaut - mot-clé en xml sur les développeurs Google auparavant, mais maintenant je ne pouvais pas)

14
Alex Zezekalo

Vous pouvez définir gone, visible, invisible dans la propriété default. Remplacez par ci-dessous.

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

Vérifiez si vous avez déjà importé la classe View.

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

En outre, la syntaxe correcte par défaut pour la valeur par défaut pour la visibilité est default=gone, non default=View.GONE

2
jantursky