2011-10-09 77 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