前提
Android (Kotlin)で DataBinding を使用しています。
レイアウトの XML 上で、あまり使ったことない View にどういう属性が使用でき、
またその属性に DataBinding で値を切り分けて設定できるかはどうやって調べるのでしょうか?
具体例
いまは、できると思ってレイアウトXMLを記述し、ビルドエラーになって使えないのか?と疑念をいだき調べる、という手間のかかる方法です。
具体例をあげると MaterialButton に app:backgroundTint という属性があるのは把握しており、
以下のように単純に color を指定することはできております。
XML
1<com.google.android.material.button.MaterialButton 2 android:id="@+id/hoge_button" 3 android:layout_width="0dp" 4 android:layout_height="wrap_content" 5 app:backgroundTint="@color/white"/>
これをフラグにより color を変えたく、以下のように記載してみました。
XML
1<com.google.android.material.button.MaterialButton 2 android:id="@+id/hoge_button" 3 android:layout_width="0dp" 4 android:layout_height="wrap_content" 5 app:backgroundTint="@{viewModel.hogeFlag ? @color/white : @color/black}"/>
これは以下のビルドエラーになります。 backgroundTint は DataBinding で値を切り分けできないようです(違ってたらご指摘ください)
Cannot find a setter for <com.google.android.material.button.MaterialButton app:backgroundTint> that accepts parameter type 'int'
試したこと
@color/white ではなく、Rをimportし、
XML
1<com.google.android.material.button.MaterialButton 2 android:id="@+id/hoge_button" 3 android:layout_width="0dp" 4 android:layout_height="wrap_content" 5 app:backgroundTint="@{viewModel.hogeFlag ? R.color.white : R.color.black}"/>
でも同じエラーでした。
知りたいこと
私はこれをビルドエラーで知りました。しかしながら、これをビルドする前の段階で、backgroundTint は DataBinding で colos.xml に定義した color を設定できないことを知れれば、もっと実装の効率が上がると思います。
私が知りたいのは、この DataBinding で値を設定できるかどうかをどうやって事前に知れるか、です。
ドキュメント等が見つけられていません。
ドキュメントがもしなければ、ここのこれを見るとわかる、など教えていただけないでしょうか。
補足情報(FW/ツールのバージョンなど)
Android Studio Electric Eel | 2022.1.1
Kotlin 1.7.10
回答1件
あなたの回答
tips
プレビュー