2017-06-10 2 views
1

J'utilise la liaison de données et j'essaie de composer certains paramètres. J'ai une vue dont la mise en page que je veux être déterminé via un attribut personnalisé (passant dans une énumération). Par exemple en passant soit Setting.CHECKBOX ou Setting.SWITCH devrait me laisser gonfler le contrôle approprié pour la vue. La vue serait définie comme ceci:Existe-t-il un moyen de lire un attribut de vue via la liaison de données lors de la création d'une vue?

<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} /> 
... 

Est-il possible que je peux lire cet attribut setting:control avant la mise en page est gonflé? Basé sur le paramètre, je veux spécifier comment gonfler le SettingView. Je sais que je peux le faire via des attributs personnalisés/styleables, mais je me demandais si cela pouvait être réalisé via la liaison de données.

Répondre

0

Non. Pour observer la valeur de l'attribut pendant le gonflage, vous ne pouvez pas utiliser la syntaxe de liaison de données. La liaison de données supprimera la valeur du fichier XML et l'ajoutera au code de liaison généré.

Au lieu de cela, ajoutez l'attribut au fichier attrs.xml et affectez la valeur en utilisant la syntaxe normale. Vous pouvez ensuite lire l'attribut en utilisant context.obtainedStyledAttributes() et en accédant à la valeur via le TypedArray.

+0

J'avais peur de ça. Eh bien, merci, George (merci aussi pour les didacticiels géniaux)! – Vas