2010-09-06 11 views
12

J'ai créé une image de fond personnalisée et voulait l'utiliser comme arrière-plan pour une mise en page qui a une hauteur de wrap_content. Cependant, la hauteur totale du contenu de cette mise en page est très inférieure à la hauteur de l'image d'arrière-plan. Lorsque je l'ai défini comme arrière-plan en XML via android: background = "@ drawable/image", j'ai remarqué qu'il affiche toute la hauteur de l'image, bien que la hauteur du contenu réel soit beaucoup plus courte.image de fond pour wrap_content

Y at-il un moyen d'empêcher cela?

Merci.

Répondre

0

Vous pouvez convertir votre image d'arrière-plan en dessin 9-patch ou utiliser un bitmap XML pour modifier le comportement de votre image lorsqu'elle est supérieure au conteneur. Voir this page pour plus d'informations sur les deux.

+0

Pourriez-vous nous en dire plus à ce sujet si vous utilisez un bitmap XML? J'ai essayé d'utiliser un bitmap XML et utilisé la propriété android: gravity = "top | fill_horizontal | clip_vertical" pour voir si cela va résoudre le problème, mais ce n'est toujours pas le cas. – user440308

+0

Eh bien, je n'ai pas essayé de bitmap XML pour le cas comme le vôtre, mais les options semblent prometteuses. La méthode des 9 patchs fonctionnera à coup sûr - j'ai déjà utilisé ça. –

+0

Hmm. J'ai essayé toutes les options qui pourraient aider, mais je pense que je peux faire quelque chose de mal. J'ai cherché partout en ligne et personne ne semble avoir ce problème ... – user440308

2

J'ai eu un problème similaire et utilisais un 9patch. L'image complète du patch 9 s'affichait en arrière-plan, même si le contenu auquel elle était attachée n'était pas très grand (utilisait wrap_content). Je ne suis pas sûr pourquoi Android a choisi de montrer l'image complète au lieu de mettre à l'échelle l'arrière-plan pour s'adapter au contenu.

Cependant, j'ai corrigé le problème en réduisant mon image d'arrière-plan. J'entends par là la préservation des coins mais la réduction des portions verticales et horizontales. Voir les images ci-jointes de l'image de fond que j'avais avant et le résultat de l'effort de redimensionnement.

alt text alt text

+0

Merci beaucoup pour cela. J'ai passé quelques heures à découvrir pourquoi mon image 9patch générait une vue beaucoup plus élevée que wrap_content en paramètre height. Il est intéressant de noter que cet effet semble dépendre du dispositif.Sur un Nexus7, la hauteur de la vue était correcte même avec la grande image de fond d'origine, alors que sur une Xperia, la hauteur de la vue était presque deux fois plus grande qu'elle aurait dû l'être. Sur un Xperia mini et sur une tablette Android à bas prix avec Cyanogen Mod, l '"effet" était là aussi bien mais pas aussi fort que sur le rayon Xperia. – Nantoka

0

J'ai aussi fait face à ce problème. Si vous définissez la ressource de l'arrière-plan est trop petite, vous risquez d'avoir des problèmes avec les proportions. La solution que j'ai trouvée consistait à diviser l'image de l'arrière-plan en trois parties: haut, moyen et bas. Chacune de ces images sont des arrière-plans de trois Layouts/ImageViews différents. La partie centrale est celle qui détient le "wrap_content" propriété:

Top: bg_top

Moyen: bg_middle

Bas: enter image description here

Comme l'augmentation de la taille du contenu, les frontières garderont non affecté et le milieu augmentera aussi (tout comme la «boîte» entière). Bien sûr, ceci est une solution pour un cas où la partition de l'image de votre arrière-plan est logique.