Styles de widget personnalisé Android: comment les mettre dans un espace de noms?
Dans le ApiDemos, il y a une vue exemple appelé Gallery1 qui déclare un style personnalisé attrs.xml, en tant que tel:
<declare-styleable name="Gallery1">
<attr name="android:galleryItemBackground" />
</declare-styleable>
maintenant, je veux faire la même chose pour mes widgets, mais à l'aide d'un espace de noms différent. Cependant, dès que j'ai remplacer le android: espace de noms avec quelque chose d'autre, j'obtiens cette erreur:
ERREUR: Dans Gallery1, impossible de trouver l'attribut myns:galleryItemBackground
Impossible de trouver l'attribut? Pourquoi faut-il regarder pour un attribut, je suis sur le point de déclarer? N'est-ce pas le but de ce fichier pour être en mesure de nommer vos propres attributs personnalisés?
Il est intéressant de noter qu'il fonctionne si vous ne fournissez pas un espace de noms personnalisé, mais juste un nom d'attribut.
source d'informationauteur Matthias
Vous devez vous connecter pour publier un commentaire.
J'ai eu un problème similaire résultant dans le message d'erreur Aucun identificateur de ressource trouvé pour l'attribut dans le paquet
La solution pour moi a été de déclarer l'espace de noms lorsque vous utilisez l'attribut personnalisé.
Dans votre fichier xml où vous utilisez votre attribut personnalisé préciser:
...
Au cas où quelqu'un s'est toujours intéressée, j'ai eu le même problème et résolu par l'ajout d'un "format" de l'attribut (il semble qu'il ne prend pas de "chaîne" comme valeur par défaut):
J'ai trouvé cette article utile dans une situation similaire.
", En référence à nos nouveaux attributs est en fait un processus en deux étapes. D'abord, nous avons déclaré un nouvel espace de noms, et ensuite, nous avons spécifié les valeurs de nos nouveaux attributs dans le fichier XML".
créer un fichier xml et de coller ce code ci-dessous et de mettre en res->valeurs de dossier
puis copiez code ci-dessous
et mis à ur, en arrière-plan du widget je veux dire
imageView.setBackgroundResource(back);