210 votes

Attributs portant le même nom dans attrs.xml pour une vue personnalisée

Je suis en train d'écrire quelques vues personnalisées qui partagent certains de même nom des attributs. Dans leurs respectifs <declare-styleable> section en attrs.xml je voudrais utiliser le même nom pour les attributs:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="MyView1">
        <attr name="myattr1" format="string" />
        <attr name="myattr2" format="dimension" />
        ...
    </declare-styleable>

    <declare-styleable name="MyView2">
        <attr name="myattr1" format="string" />
        <attr name="myattr2" format="dimension" />
        ...
    </declare-styleable>
</resources>

J'obtiens un message d'erreur indiquant que myattr1 et myattr2 sont déjà définis. J'ai trouvé que je dois omettre l' format d'attribut pour myattr1 et myattr2 en MyView2, mais si je fais ça, j'obtiens l'erreur suivante dans la console:

[2010-12-13 23:53:11 - MyProject] ERROR: In <declare-styleable> MyView2, unable to find attribute 

Est-il possible que je puisse accomplir cela, peut-être une sorte de namespacing (juste deviner)?

Merci pour votre aide ;)

441voto

Venator85 Points 2440

Résolu!

Extrayez simplement les attributs communs des deux vues et ajoutez-les directement en tant qu'enfants du noeud <resources> :

 <?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="myattr1" format="string" />
    <attr name="myattr2" format="dimension" />

    <declare-styleable name="MyView1">
        <attr name="myattr1" />
        <attr name="myattr2" />
        ...
    </declare-styleable>

    <declare-styleable name="MyView2">
        <attr name="myattr1" />
        <attr name="myattr2" />
        ...
    </declare-styleable>
</resources>
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X