2017-06-10 8 views
1

私はデータバインディングを使用しており、いくつかの設定を構成しようとしています。私はレイアウトをカスタム属性(enumを渡す)で決定したいというビューを持っています。たとえば、Setting.CHECKBOXまたはSetting.SWITCHのいずれかを渡すと、ビューの適切なコントロールを膨張させることができます。ビューは次のように定義されます。ビューの作成中にデータバインディングを使用してビュー属性を読み取る方法はありますか?

<data> 
<import type="com.mypackage.ui.SettingView.SettingControl" /> 

<SettingView 
    android:id="@+id/setting_foo 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    setting:control="@{Setting.CHECKBOX} /> 
... 

レイアウトが膨張する前に、私はそのsetting:control属性を読むことができる方法はありますか?この設定に基づいて、SettingViewを拡張する方法を指定したいと思います。

私はカスタムアトリビュート/スタイル可能でそれを行うことができると知っていますが、データバインディングで達成できるかどうかは疑問でした。

答えて

0

いいえインフレ時に属性値を調べるには、データバインディング構文を使用できません。データバインディングは、XMLから値を取り除き、生成されたバインディングコードにその値を追加します。

代わりに、属性をattrs.xmlファイルに追加し、通常の構文を使用して値を割り当てます。次に、context.obtainedStyledAttributes()を使用して属性を読み取り、TypedArrayを介して値にアクセスできます。

+0

私はそれを恐れていました。ああ、ありがとう、ジョージ(素晴らしいチュートリアルのおかげで)! – Vas

関連する問題