2010-12-03 19 views
9

J'ai essayé de convertir tout l'arrière-plan de mes boutons en .9.png, mais j'ai un problème avec Eclipse.Bug Eclipse avec neuf fichiers patch?

J'ai créé mon patch neuf .png avec l'outil, mais depuis que je l'ai placé dans mon dossier/res/drawable, j'ai les erreurs suivantes dans tous mes fichiers .xml lorsque j'essaie d'accéder à une ressource commençant par @drawable :

Error: No resource found that matches the given name (at 'drawable' with value '@drawable/my_resource'). 

Voici mon .9.png: nine patch

et voici une capture d'écran: screenshot

y at-il un problème dans mon .9.png ou est-ce un problème w Eclipse?

Merci

+0

btw: reg. "Je l'ai mis dans mon dossier/res/drawable ..." - vous n'avez pas de dossier pouvant être tiré (en référence à votre capture d'écran), seulement drawable-hdpi, etc. C'est exprès, n'est-ce pas? –

+0

Oui c'est. Le @drawable se résout correctement. C'est juste bizarre, parce que si je supprime juste le .9.png, tout fonctionne bien, mais si je le rajoute, Eclipse ne sera pas capable de résoudre toute ressource drawable ... – nbarraille

Répondre

8

Je ne suis pas sûr que c'est ce qui cause le problème, mais dans votre NinePatch, vous devez faire la partie droite et en bas du cadre en traits pleins. La partie droite et la partie inférieure définissent votre zone de contenu (c'est-à-dire où Android place le contenu dans la zone NinePatch.) Il ne peut s'agir d'une zone discontinue. Comme c'est un dégradé, j'irais de l'avant et relierais juste les points de tous les côtés sauf le dessus. En haut, vous pouvez simplement utiliser un seul pixel noir pour obtenir le même résultat.

+5

Fondamentalement, vous pouvez avoir plusieurs zones étirables (points haut/gauche), mais une seule zone de contenu (bas/points à droite, ou toute la zone si vous laissez le blanc en bas à droite). Vous devez avoir une ligne continue ou aucune ligne sur la droite et le bas pour qu'un neufpatch soit légal. –

+0

Merci à vous deux, c'était exactement le problème. Je n'utilisais tout simplement pas l'outil de tirage au sort 9patch! – nbarraille

0

Vous référez-vous à "my_resource" (.9.png) n'importe où dans le code? Parce que votre bouton est nommé "button_blue", mais l'image dans le journal des erreurs est "my_resource". Recherchez dans le projet une classe ou un fichier XML contenant 'my_resource'. S'il n'y en a pas, essayez de nettoyer le projet dans Eclipse (Menu/Projet/Nettoyage ...) et/ou redémarrez Eclipse.

+0

Oui, l'appel à la ressource neuf patch est en réalité dans la capture d'écran, je viens de changer le message d'erreur à un message plus générique car il affiche une erreur lorsque j'essaie d'accéder à toute ressource @drawable, et pas seulement le patch neuf – nbarraille

+0

ok, alors le png est invalide comme kcoppock mentionné ci-dessous. –

0

J'ai eu les mêmes problèmes. Les mêmes erreurs. Pour tous les drawables y compris neufpatch.

L'instruction dans http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch dit que je dois mettre des fichiers dans drawable, non drawable-hdpi. Ou mdpi comme je l'ai eu. Donc, j'ai créé simplement un dossier "drawable". Et a tout déménagé là-bas. Ça ne marchera pas non plus. MAIS quand par la suite j'ai tout reculé, ça a bien marché. Tout est magique, j'ai peur. Le nettoyage et la construction ne sont pas la raison - je les ai faits après chaque changement.

1
  1. Laissez votre nom d'assumer l'image est image.9.png
  2. Utilisez le refactoring pour renommer le fichier: image9.png (je supprimer le point à partir du 9)
  3. Ensuite, utilisez à nouveau le refactoring Pour renommer le nom d'origine: image.9.png

Je suppose que le fichier de configuration n'est pas mis à jour correctement donc l'utilisation de refactor force la mise à jour de tout fichier utilisé pour la configuration.

0

Pour un fonctionnement parfait, essayez de fermer et d'ouvrir 9patch après modification.

il est préférable de fermer 9patch pour chaque image modifcation, et ré ouvrir 9patch pour la nouvelle image que vous voulez streatch avec 9patch.