2011-10-09 72 views
10

我在Android上的網格視圖佈局有問題。我無法找到解決方案來消除網格視圖中的額外空間。我嘗試了很多東西(numColumns,columnWidth,stretchMode,gravity)和建議(來自StackOverflow),但沒有任何工作正常。我花了近8個小時處理這個問題。下面是網格視圖的代碼:GridView和多餘的空間填充

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

我也試圖減少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); 
} 

但它只能在我的HTC Desire(右),但模擬器(左)與相同的顯示分辨率和相同的API版本 - 它不起作用。

enter image description here

是否有人知道,如何設置GridView的圖像,而無需任何特殊的填充或空間與所有決議和設備成功運行?

+0

看到我在[這] [1]線程的答案,它可能會幫助你。 [1]:https://stackoverflow.com/questions/6876861/removing-the-extra-padding-in-a-gridview-in-android/27321360#27321360 –

回答

20

爲了解決我的問題,我用這個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> 

最重要的事情是clipChildren財產。

+4

是設置必要clipChildren雖然?文檔說默認爲true http://developer.android.com/reference/android/view/ViewGroup.html#attr_android:clipChildren – roarster