114 votes

Android - interface utilisateur personnalisée avec des attributs personnalisés

Je sais qu'il est possible de créer un élément d'interface utilisateur personnalisé (au moyen de View ou d'une extension d'élément d'interface utilisateur spécifique). Mais est-il possible de définir de nouvelles propriétés ou attributs pour des éléments d'interface utilisateur nouvellement créés (je veux dire non hérités, mais tout neufs pour définir un comportement spécifique que je ne suis pas en mesure de gérer avec les propriétés ou attributs par défaut)

par exemple element mon élément personnalisé :

 <com.tryout.myCustomElement
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:text="Element..."
   android:myCustomValue=<someValue>
/>

Alors est-il possible de définir MyCustomValue ?

Merci

21voto

Maria Neumayer Points 2357

Dans votre dossier res/values, créez attr.xml. Vous pouvez y définir vos attributs :

 <declare-styleable name="">
    <attr name="myCustomValue" format="integer/boolean/whatever" />
</declare-styleable>

Lorsque vous souhaitez ensuite l'utiliser dans votre fichier de mise en page, vous devez ajouter

 xmlns:customname="http://schemas.android.com/apk/res/your.package.name"

et ensuite vous pouvez utiliser la valeur avec customname:myCustomValue=""

-11voto

ccheng Points 1242

Oui, vous pouvez.Utilisez simplement la balise <resource> . comme ça:

 <?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="CodeFont" parent="@android:style/TextAppearance.Medium">
        <item name="android:layout_width">fill_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:textColor">#00FF00</item>
        <item name="android:typeface">monospace</item>
    </style>
</resources>

lien du site officiel

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