web-dev-qa-db-ja.com

Android databinding:xmlでデフォルトの可視性を設定します

私はrecyclerviewにアイテムを表示し、databindingを使用しています。 XMLレイアウトでは、次のようなビューがあります。

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

それはうまく機能しますが、私には1つの問題があります。recyclerviewが項目を初期化してビューにバインドしている間、このレイアウトは画面上で1回点滅しますが、初期値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"/>

しかし、何かがうまくいかなかった:

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

したがって、またはこのパラメーターを誤って使用するか、Googleがこのキーワードをxmlデータバインディングルールから削除します(使用例default-keywordをGoogle開発者のxmlで以前に見たことがありますが、今はできません)。

14
Alex Zezekalo

goneプロパティにvisibleinvisibledefaultを設定できます。以下と交換してください。

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

Viewクラスをすでにインポートしているかどうかを確認します。

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

また、可視性のデフォルト値のデフォルトの正しい構文はdefault=gone、なしdefault=View.GONE

2
jantursky