2011-10-09 11 views
10

Ho un problema con il layout della vista griglia su Android. Non riesco a trovare una soluzione per eliminare lo spazio extra nella visualizzazione a griglia. Ho provato un sacco di cose (numColumns, columnWidth, stretchMode, gravità) e consigli (da StackOverflow), ma niente funziona correttamente. Ho passato quasi 8 ore con questo problema. Ecco un codice di visualizzazione a griglia:GridView e riempimento spazio eccessivo

<GridView 
     android:id="@+id/lookbook_gridview" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:listSelector="@null" 
     android:padding="0dip" 
     android:layout_margin="0dip" 
     android:verticalSpacing="0px" 
     android:horizontalSpacing="0px" 

     android:numColumns="auto_fit" 
     android:columnWidth="160px" 
     android:stretchMode="columnWidth" 
     android:gravity="center" 
     android:layout_gravity="center" 

     android:background="#000" 
     android:cacheColorHint="#000" 
     android:descendantFocusability="afterDescendants" 
     android:layout_alignParentTop="true" 
     android:layout_above="@id/buttons"> 
    </GridView> 

Ho anche cercato di ridurre lo spazio in più programically:

private void setGridview() 
{ 
    GridView gridview = (GridView) findViewById(R.id.lookbook_gridview); 
    Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 

    int gridSize = display.getWidth(); 
    int count = gridSize/160; // image has 160x160 px 
    int colWidth = (gridSize/count) - PADDING; 

    gridview.setColumnWidth(colWidth); 
    gridview.setNumColumns(count); 
} 

Ma funziona solo sul mio HTC Desire (a destra), ma su emulatore (a sinistra) con la stessa risoluzione del display e la stessa versione API - non funziona.

enter image description here

C'è qualcuno che sa, come impostare le immagini in GridView senza alcuna imbottitura speciale o spazio per lavorare con successo con tutte le risoluzioni e dispositivi?

+0

Vedere la mia risposta in [questo] [1] thread, potrebbe esserti utile. [1]: https://stackoverflow.com/questions/6876861/removing-the-extra-padding-in-a-gridview-in-android/27321360#27321360 –

risposta

20

per risolvere il mio problema ho usato questo GridView:

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/MyGrid" android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="0dp" 
    android:verticalSpacing="2dp" 
    android:horizontalSpacing="2dp" 
    android:scrollingCache="true" 
    android:smoothScrollbar="true" 
    android:clipChildren="true" 
    android:alwaysDrawnWithCache="true" 
    android:numColumns="auto_fit" 
    android:columnWidth="100dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center_horizontal" 
    android:background="#000000"> 
</GridView> 

La cosa più importante è la proprietà clipChildren.

+4

è l'impostazione clipChildren necessarie però? I documenti dicono che il valore predefinito è true http://developer.android.com/reference/android/view/ViewGroup.html#attr_android:clipChildren – roarster

Problemi correlati