Je sais qu'il est possible de créer un élément d'interface utilisateur personnalisé (via View ou 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 les éléments d'interface utilisateur nouvellement créés (je veux dire non hérité, mais tout nouveau pour définir un comportement spécifique que je ne suis pas capable de gérer avec les propriétés ou attributs par défaut)
par exemple élément 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 ?
THX
android
custom-controls
Waypoint
la source
la source
Réponses:
Oui. Petit guide:
1. Créez un attribut XML
Créez un nouveau fichier XML à l'intérieur
/res/values/attrs.xml
, avec l'attribut et son typeFondamentalement, vous devez en configurer un
<declare-styleable />
pour votre vue qui contient tous vos attributs personnalisés (ici un seul). Je n'ai jamais trouvé une liste complète des types possibles, vous devez donc en rechercher un, je suppose. Les types que je connais sont la référence (à une autre ressource), la couleur, le booléen, la dimension, le flottant, l'entier et la chaîne . Ils sont assez explicites2. Utilisez les attributs de votre mise en page
Cela fonctionne de la même manière que vous l'avez fait ci-dessus, à une exception près. Votre attribut personnalisé a besoin de son propre espace de noms XML.
Assez simple.
3. Utilisez les valeurs que vous avez transmises
Modifiez le constructeur de votre vue personnalisée pour analyser les valeurs.
distanceExample
est une variable de membre privé dans cet exemple.TypedArray
j'ai beaucoup d'autres choses pour analyser d'autres types de valeurs.Et c'est tout. Utilisez la valeur analysée dans votre
View
pour le modifier, par exemple, utilisez-laonDraw()
pour modifier l'apparence en conséquence.la source
http://schemas.android.com/apk/res-auto
lors de la déclaration de l'espace de noms personnaliséString initialText = attrs.getAttributeValue("http://schemas.android.com/apk/res-auto", "initialText");
où attr est le AttributeSet qui est passé dans le constructeur et 'initialText' est votre nom d'attribut personnaliséDans votre dossier res / values, créez attr.xml. Vous pouvez y définir vos attributs:
Lorsque vous souhaitez ensuite l'utiliser dans votre fichier de mise en page, vous devez ajouter
puis vous pouvez utiliser la valeur avec
customname:myCustomValue=""
la source
Oui, vous pouvez, utilisez simplement le
<resource>
tag.comme ça:
lien depuis le site officiel
la source