DataBindingでViewの表示・非表示を切り替えたい

AndroidのDataBindingでは、kotlinの変数の状態に対応するUIの状態を、layoutのxmlファイルに記述できます。

よくあるのは、変数の状態によってViewの表示・非表示を切り替えるというケースです。Viewの表示はandroid:visibilityvisible, invisible, goneのいずれかを設定して指定するのですが、変数の状態で判断するには、ラムダ式で記述することになります。ラムダ式内ではkotlinの文法で記述しますので、View.VISIBLEのようにViewクラスへの参照が必要になります。そこで、importタグを使います。

TextViewの表示・非表示をTestViewModel#textViewEnableによって切り替える場合のXMLは以下のようになります。

<layout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools">

    <data>
        <import type="android.view.View" />
        <variable
            name="viewModel"
            type="com.example.testapp.TestViewModel" />
    </data>

    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="TextView"
            android:visibility="@{viewModel.textViewEnable ? View.VISIBLE : View.GONE"} />
    </LinearLayout>
</layout>

「DataBindingでViewの表示・非表示を切り替えたい」への1件のフィードバック

  1. ピンバック: AndroidでDataBindingできるプロパティやメソッドの一覧を知りたい - 縁側プログラミング

コメントは受け付けていません。