6
votes

Android GridView imperfection, comment éliminer l'espace blanc supplémentaire à droite

J'ai un calendrier basé sur la grille de la grille. J'ai la disposition XML suivante avec le sélecteur défini sur NULL ainsi android: listelector = "@ null" conformément à l'avantage que j'ai reçu de ce site. Maintenant, je reçois quelques pixels de large bande à droite de la grille. Pourquoi? J'ai essayé tout ce que je peux mais à profiter. Voici ma mise en page XML: xxx

Ce que je reçois est cette photo:

 Entrez la description de l'image ici


4 commentaires

Peut-être que c'est un problème de barre de défilement? Essayez de définir une visibilité de la barre de défilement à FALSE.


Avez-vous essayé de changer d'espacement horizontal de -1 à 0?


@Demonick, j'ai essayé cette question de barreau de défilement et cela n'a pas fonctionné. Voir Dinesh Sharma's Réponse ci-dessous semble avoir un sens.


Vous pouvez essayer de prendre une mise en page dans votre mise en page principale et placez votre grille à l'intérieur de cette mise en page et de la propriété Android: Gravity = "Centre_horizontal" de cette disposition qui peut vous aider et 1 autre chose changer layout_width à "Wrap_Content"


5 Réponses :


0
votes

Essayez d'utiliser

android:layout_margin="0dp"
android:padding="0dp"


0 commentaires

6
votes

Cet espace est dû au calcul imparfait pour chaque ligne de votre grille. Par exemple, votre largeur de périphérique est de 320 px et vous disposez de 7 lignes, essayez tout calcul qui répond à 320 px. Si la largeur de chaque cellule est de 45.71428571428571 px, alors qu'il peut être réduit.

Autre option

Appliquer Android: Gravity = "Centre" propriété dans votre réseau afin que les espaces soient également divisés de gauche à droite


2 commentaires

Yah, tu as raison @ dinesh-sharma. En mode paysage, l'écart disparaît presque prouvé que le problème est lié aux dimensions de l'écran. Je n'ai pas le Android: Gravity = "Centre" chose à travailler cependant. Cependant, cela semble plutôt trivial. Merci!


J'ai essayé le Android: gravity = "Centre" et Android: Layout_gravity = "Centre" Solutions et ils n'ont pas fonctionné. J'ai une solution de compromis Rellies sur la spécification des largeurs de colonne de code de telle sorte que leur largeur combinée est plus grande que la largeur de l'écran de Devince. Cela force les colonnes à remplir l'écran, mais la dernière colonne est légèrement coupée - pas très bonne si vous avez une bordure parce que la frontière disparaît. Le with est spécifié ainsi: [Link] Bytecapsule .blogspot.com / 2011/08 / ... (bytecapsule)



0
votes

J'ai eu le même problème, cependant, dans mon cas, je n'ai pas contrôlé l'instance GridView afin que je n'ai pas pu lire la largeur de la colonne. Néanmoins, je pourrais sous-classer son conteneur.
Ce n'est pas très orthodoxe mais vous pouvez remplacer la méthode OnMeasure et ajoutez quelques pixels.
Quelque chose comme ceci: xxx


0 commentaires

4
votes

Dans mon cas, j'avais l'espacement horizontal comme 1 dP xxx

afin de résoudre ce problème, je viens de mettre le bon rembourrage comme -1dp xxx

Même si je m'attendais à obtenir une place sur le côté gauche en raison de cela, mais cela a fonctionné correctement


3 commentaires

J'ai eu horizontalspacing = "0DP" et cette solution m'a aidé de toute façon. L'espace vide est parti.


@REMPELOS Si je me souviens bien, le nombre dans le paddingright doit être -horizontalsPaçage, donc si vous aviez un horizontalsPaçage de 2 dP, votre paddingright devrait être de -2


@Jimmar en fait, vous êtes correct. J'ai confondu ce cas avec le mien où j'avais horizontalspacing = "0dp" et toujours l'espace supplémentaire est apparu à droite, mais ajoutant juste paddingright = "- 1dp" corrigé.



0
votes
grid.setColumnWidth(grid.getColumnWidth()+1);
This will get the current ColumnWidth and add 1 pixel to it.
Remember to use this after onCreateView,since the grid needs to be initialized before that.Also,your grid view,should use match_parent (height and width).The image/layout in the column should be also match_parent.

0 commentaires