Comment faire pour centrer GridView correctement?
J'ai été essayer et essayer et pas de chance. J'ai eu de la chance à toutes les autres réponses ici également liées à centrage GridView
et aussi pas de chance. C'est mon GridView
xml:
<GridView
android:id="@+id/calendar_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="7"
android:columnWidth="40dp"
android:verticalSpacing="1dp"
android:horizontalSpacing="1dp"
android:paddingTop="2dp"
android:stretchMode="columnWidth"
android:layout_gravity="right"
android:gravity="right"
android:background="#696969" ></GridView>
J'ai essayé toutes les combinaisons que je pense, mais on n'a pas beaucoup travaillé. Au moins, pas de cohérence entre les dispositifs. C'est une image de ce qu'il a toujours fait.
Comme vous pouvez le voir sur le côté droit de la GridView, il y a de l'espacement. J'essaie constamment de changer, et il ne fonctionne presque jamais. À l'aide de android:stretchMode
ne le changer, mais il bousille l'espacement j'ai entre les cellules, qui ne fonctionne pas. À l'aide de la Gravité échoue également comme vous pouvez le voir. J'ai essayé toutes les autres valeurs pour elle et il reste, rien ne change. Il est collé à gauche. Je trouve aussi que c'est bizarre que d'essayer de changer la taille de android:columnWidth
de rien de moins de 40 ans, il ne fait rien non plus. Et quand j'ai augmenter de 40 à 45 ans, il a aussi ne change rien. Mais le changer à 50 fait de la place sur la droite de s'en aller. Mais lorsqu'on le met sur mon téléphone, l'espacement est de là! J'ai sauté comme il y a 2 semaines pour continuer à travailler sur d'autres choses, mais il semble que j'ai encore à résoudre ce problème ou même de comprendre pourquoi rien j'essaie de travaux.
Si ça aide quelqu'un, aidez-moi ici, je peux aussi fournir le xml ce qui rend les cellules. Mais je ne sais pas si c'est important. Mais ici, il est:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TextView
android:id="@+id/day_num"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="10dp"
android:background="#000000"
android:height="35dp"
android:gravity="center_vertical|center_horizontal" />
</LinearLayout>
Si elle aide, le GridView
parent est un LinearLayout
:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_weight="0"
android:gravity="center" >
Il y a aussi un frère ou une sœur avec un poids de 1, mais je ne pense pas que cela devrait être effectuer est que le poids de 0 fait que d'une partie de son espace, d'abord.
MODIFIER:
J'ai donc continué à jouer avec elle, très ennuyé, d'autant plus que pas que beaucoup de gens semblent avoir ce problème, mais il semble que peu importe comment petit je fais le columnWidth
, le contrôle GridView peine devient plus petite. En fait, même lacune que vous voyez est ce qu'il reste à jusqu'à ce que je vais à 50dp. Mais quand je vais en mode portrait, l'écart réapparaît, donc je l'élever jusqu'à 90dp (j'ai essayé sous, n'est-ce pas changer quoi que ce soit), et il s'en va. Bizarre, c'est la GridView
ne change pas d'ailleurs le remplissage du fossé. J'ai donc pu faire 200dp, et il serait un look parfait sur mon écran dimen, et tout autre écran de petite taille. Une fois que je vais à une tablette, je pense que je doit augmenter que de plus en plus, mais le point est, c'est le comportement bizarre. Quelqu'un a rencontré ce?
Semble comme il n'y a pas de solution. Bien sûr, je suis allé à la route de la prolongeant sur les côtés, qui fonctionne très bien. Fondamentalement, la place dans certains de voir et de manipuler le parent Vue du contrôle de sa mise en page dans votre Viewgroup.
ok merci 🙂 ....
OriginalL'auteur Andy | 2012-07-19
Vous devez vous connecter pour publier un commentaire.
Vous voudrez peut-être mettre votre
GridView
à l'intérieur d'unRelativeLayout
et puis définissezGridView
'slayout_centerInParent
propriététrue
. quelque chose comme ceci:RelativeLayout
vous donne un meilleur contrôle des positions des enfants.J'ai eu un problème similaire dans le passé. Je pense que le problème était dû au fait que l'espace restant sur le droit ne peut pas être réparti de manière égale entre les colonnes (par exemple, vous disposez de 7 colonnes et seulement 6 pixels restants). Avec LinearLayout, vous n'avez pas beaucoup de contrôle sur la position, car il commence toujours couché les enfants à partir du coin haut/gauche, de sorte que tout le reste de l'espace est à la droite/bas.
Ahh, qui en fait prend tout son sens. J'ai commencé à assumer ce que j'ai augmenté la taille de columnWidth. Mais n'en était pas sûr. Je suppose que dans ces cas, soit de l'éviter ou de l'utiliser comme je le suis à ce point. Je pourrais certainement être à l'aide de TableLayout. Genre de le regrette maintenant. En tout cas, merci pour votre temps.
bien sûr, pas de problème. L'aide relative de la mise en page avec
centerInParent
pour l'enfant doit aussi diviser ce qui reste d'espace sur tous les côtés de l'enfant, effectivement le fait de centrer votre GridView.Comment cela fonctionne, si le contrôle gridview a une largeur et une hauteur définie à match_parent?
OriginalL'auteur Aleks G
Voici ma configuration:
OriginalL'auteur Roger Alien
vous devez définir la Gravité de la Mère de Mise en page de TextView ou LayoutGravity de TextView, Plz changer de Cellule de Mise en page comme suit:
OriginalL'auteur jeet
J'ai rencontré le même problème et RelativeLayout avec centerInParent n'a pas aidé non plus.
Fondamentalement, la section peut contenir un reste à couper en fonction de la largeur de l'écran.
donc, la seule façon de centre de la GridView est de calculer une largeur qui serait sans reste et utilisez le reste de la valeur, comme le rembourrage.
ensuite, lorsque vous créez votre GridView:
OriginalL'auteur shi
OriginalL'auteur Neyomal