web-dev-qa-db-fra.com

Images d'ajustement automatique GridView

im essayant d'obtenir des images affichées dans une GridView et d'obtenir les colonnes automatiquement définies, jusqu'à présent, j'ai dû définir manuellement le nombre de colonnes qui n'est pas ce que je veux faire car cela affectera la taille des images sur des écrans de tailles différentes . J'ai essayé de le régler sur auto_fit mais il n'affiche que 2 colonnes au milieu de l'écran. C'est ce que j'essaie de réaliser: (chaque carré rouge représente une image)

enter image description here

puis une fois tourné en mode paysage, je veux que les colonnes s'ajustent automatiquement pour que tout soit uniforme. Toute aide serait très appréciée, merci :)

33
Tom O

Essayez les attributs GridView, en particulier Android:numColumns="auto_fit" et Android:stretchMode. Ce qui suit fonctionne pour moi:

<GridView 
    Android:id="@+id/myGrid"
    Android:layout_width="fill_parent" 
    Android:layout_height="fill_parent"
    Android:padding="10dp"
    Android:verticalSpacing="10dp"
    Android:horizontalSpacing="10dp"
    Android:numColumns="auto_fit"
    Android:columnWidth="60dp"
    Android:stretchMode="columnWidth"    
    Android:gravity="center"
/>
71
Jeff Gilfelt

Je ne sais pas pourquoi quelqu'un a voté contre la réponse au-dessus de moi (j'ai donc voté à nouveau): j'ai dû résoudre un problème similaire par programme (avec un GridView des enfants ImageView). Certains codes ont été supprimés pour plus de clarté:

    int iDisplayWidth = getResources().getDisplayMetrics().widthPixels ;

    iImageWidth = iDisplayWidth
        / iNumberOfColumns ; 
    gridview.setColumnWidth( iImageWidth );
    gridview.setStretchMode( GridView.NO_STRETCH ) ;    
    /* wrap_content in the xml file is supposed to do this, but it didn't seem to work */

Meilleures salutations,

Piesia

13
Piesia

Une meilleure solution consiste à mesurer la largeur par programme, afin de ne pas vous retrouver avec une largeur de colonne codée en dur:

Android: Comment GridView auto_fit trouve-t-il le nombre de colonnes?

5
Vaiden