Comment puis-je centre un GridView dans son LinearLayout parent?
GridView ne se comporte pas comme il est censé le faire.
Cette capture d'écran montre que le contrôle GridView (en mode paysage) est vidé de gauche.
Je veux qu'il soit centré.
C'est le XML de mise en page pour le contrôle GridView.
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/templatelandscape"
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<GridView
android:id="@+id/commandsbarlandscape"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1.0"
android:layout_alignParentTop="true"
android:layout_centerInParent="true"
android:padding="0dp"
android:verticalSpacing="2dp"
android:horizontalSpacing="2dp"
android:numColumns="auto_fit"
android:columnWidth="52dp"
android:stretchMode="spacingWidth"
android:gravity="fill_horizontal" />
</LinearLayout>
Ce que je fais mal ?
Vous avez besoin GridView pour être centré ou de ses éléments???
Je veux le contrôle GridView pour être centré dans son parent. Pas les éléments.
Je veux le contrôle GridView pour être centré dans son parent. Pas les éléments.
OriginalL'auteur Jacques René Mesrine | 2009-10-09
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si vous avez résolu votre problème (j'espère que oui, et aussi, je suis très en retard sur la manière de répondre sur ce post!), mais voici un indice:
Malheureusement, ce travail uniquement si il y a 1 contenu sur la grille.
Peut-être que quelqu'un peut l'améliorer!
OriginalL'auteur JJ86
android:layout_height="wrap_content"
n'a pas de sens pour les widgets qui ont leur propre défilement, commeGridView
.android:layout_alignParentTop="true"
etandroid:layout_centerInParent="true"
sont pourRelativeLayout
, pasLinearLayout
.De vous débarrasser de votre
android:layout_weight="1.0"
, changer votreandroid:layout_height
à"fill_parent"
ou une hauteur, changer laLinearLayout
à unRelativeLayout
, et vous pouvez être en meilleure forme.OriginalL'auteur CommonsWare
définir la valeur de LinearLayout avec l'attribut suivant
android:gravity="center"
.et de supprimer la ligne suivante à partir gridview
OriginalL'auteur dhuma1981
Essayer de passer à l'RelativeLayout et retirer le rembourrage horizontal à partir de l'affichage de la grille. Remplissage Horizontal a été la cause de mes grille de déplacer hors du centre. J'ai ajouté une vue conteneur autour de la grille de l'élément de mise en page pour créer le rembourrage.
OriginalL'auteur James Wald
Votre GridLayout devrait être comme ça..
Je viens de place android:layout_gravity="center_horizontal" dans le parent de mise en page de sorte qu'il set gridlayout dans celle du parent du centre, mais pas qu'il est contenu dans le centre que vous le souhaitez.
Également ajouté android:layout_width="0dp" parce que c'est égale à ""warp_content de la propriété" si vous donnez "0dp", il vous montrera les meilleurs résultats.
J'ai aussi retiré que par rapport attributs de mise en page que vous avez ajouté vous pouvez le constater, si vous n'êtes pas à l'aide de RelativeLayout alors il est dénué de sens d'utiliser les propriétés qui ne font rien.
Pour fins de test, vous pouvez vérifier qu'elle fonctionne correctement ou non il suffit de test à l'aide de code xml suivant
Le xml ci-dessus vous montre que votre grille de mise en page vient en centre de parent, mais pas son contenu.
Espérons que cette explication fonctionne pour vous...
OriginalL'auteur MobileEvangelist
Au lieu de définir le GridView dans le LinearLayout, la mettre dans le RelativeLayout et
réglez l'option layout_centerHorizontal=true et layout_centerVertical=true dans le contrôle GridView.
OriginalL'auteur Sohaib Rahman
La meilleure solution que j'ai trouvé est de le faire en code.
C'est mon xml
Et c'est le code que faire de la magie sur mon fragment:
OriginalL'auteur Pablo