35 votes

Pourquoi y a-t-il des pixels supplémentaires autour de mon Android GridView?

J'ai un GridView dans mon application Android qui dispose d'un certain nombre de ImageViews en elle. L'espace sur mon écran est limité et je veux que les images occupent autant d'espace qu'ils le peuvent. Malheureusement, le contrôle GridView laisse toujours de 5 pixels de l'écran vide de l'espace autour du bord extérieur de la ImageViews (l'espace entre les ImageViews est définie à l'horizontale/verticale de l'espacement et se comporte correctement). Le vide de l'espace agit comme une sorte de marge autour de la ImageViews, mais je ne peux pas m'en débarrasser. Personne ne sait quelle est la cause de cette "frontière" et comment je peux me débarrasser de celui-ci (ou au moins le rendre plus petit)? Merci.

Mise à jour: je suis de la création de la ImageViews en gonflant un .fichier xml dans le getView() la méthode de ma classe d'Adaptateur. Voici le xml je suis gonflage:

<ImageView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:background="#FF00FF" />

J'ai défini le GridView dans ma mise en page fichier xml comme ceci:

<GridView
   android:id="@+id/mygrid"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:layout_above="@+id/abutton"
   android:layout_marginBottom="8dp"
   android:numColumns="5" android:background="#FF0000"/>

Voici une capture d'écran du problème. La zone rouge dans mon GridView. Le violet zones sont mes ImageViews. L'image affichée est un simple rectangle bleu transparent center. L'image est 45x45 pixels (mais n'est 30x30 pixels dans mon appli - je vais vous inquiéter à ce sujet plus tard). La bordure rouge autour de la violette est ce que je suis en train de les éliminer.

alt text

67voto

A.J. Points 1129

Merci pour le conseil tout le monde, mais il s'avère que la réponse était quelque part à laquelle nous ne nous attendions pas. Les pixels supplémentaires ont été causés par le sélecteur attribué à mon GridView. Je suppose que le sélecteur par défaut est une image de 9 patchs entourée d’une bordure de 5 pixels. Lorsque j'ai créé et attribué un 9-patch avec des bordures plus petites (ou pas du tout - juste un fichier .png normal), l'espace supplémentaire dans mon GridView a disparu.

0voto

Cheryl Simon Points 25259

Avez-vous essayé de régler les padding sur le ImageView et les horizontalSpacing et verticalSpacing du GridView sur 0?

0voto

AndrewKS Points 1335

Essayez de définir les options layout_height et layout_width de la vue d'image sur fill_parent.

 iv.setLayoutParams(ViewGroup.LayoutParams(ViewGroup.MATCH_PARENT, ViewGroup.MATCH_PARENT));
 

Je le ferai de manière dynamique, je crois.

0voto

oren zvi Points 48

Pour moi, rien ne m'a aidé à l'exception de la définition de l' attribut android:columnWidth dans le xml (par exemple android:columnWidth="50dp" )

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