2011-05-03 3 views
29

im cercando di ottenere immagini visualizzate in una GridView e ottenere automaticamente le colonne impostate, finora ho dovuto impostare manualmente il numero di colonne che non è quello che voglio fare in quanto ciò influenzerà quanto grande le immagini sono su schermi di dimensioni diverse. Ho provato a impostarlo su auto_fit ma visualizza solo 2 colonne al centro dello schermo. Questo è quello che im cercando di ottenere: (Ogni quadrato rosso rappresenta un'immagine)GridView auto fit images

enter image description here

poi quando si gira verso modalità orizzontale voglio le colonne a forma di auto in modo che tutti i suoi pari. Qualsiasi aiuto sarebbe molto apprezzato, grazie :)

risposta

70

Esperimento con gli attributi GridView, in particolare android:numColumns="auto_fit" e android:stretchMode. Le seguenti opere per me:

<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" 
/> 
+4

brillante. Avevo auto_fit, ma mancava columnWidth. Dopo averlo aggiunto, le cose hanno iniziato a funzionare magnificamente. –

+0

Avevo tutto tranne il parametro columnWidth, che è obbligatorio per avere qualcosa di 2 colonne – njzk2

+2

Ho lo stesso identico XML ma il GridView mostra solo 2 colonne! –

13

Sono Non so perché qualcuno abbia votato la risposta sopra di me (così ho votato di nuovo): ho dovuto risolvere un problema simile in modo programmatico (con una GridView di bambini ImageView). Alcuni codice rimosso per maggiore chiarezza:

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 */ 

Con i migliori saluti,

Piesia

+0

Perché NO_STRETCH è migliore di STRETCH_COLUMN_WIDTH per la modalità stretch? –