2011-10-09 24 views
10

Tôi gặp sự cố với bố cục chế độ xem lưới trên Android. Tôi không thể tìm thấy giải pháp để loại bỏ thêm không gian trong chế độ xem lưới. Tôi đã thử rất nhiều thứ (numColumns, columnWidth, stretchMode, gravity) và các lời khuyên (từ StackOverflow), nhưng không có gì hoạt động chính xác. Tôi đã dành gần 8 giờ với vấn đề này. Đây là một quy tắc ứng xem lưới:GridView và khoảng cách thừa không gian

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

Tôi cũng đã cố gắng để giảm thêm không gian 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); 
} 

Nhưng nó chỉ hoạt động trên HTC Desire của tôi (bên phải), nhưng trên giả lập (trái) với cùng độ phân giải màn hình và cùng một phiên bản API - nó không hoạt động.

enter image description here

Có ai đó biết, làm thế nào để thiết lập hình ảnh trong GridView mà không cần bất kỳ lớp đệm đặc biệt hoặc không gian để làm việc thành công với tất cả các nghị quyết và các thiết bị?

+0

Xem câu trả lời của tôi trong chuỗi [this] [1] này, nó có thể giúp bạn. [1]: https://stackoverflow.com/questions/6876861/removing-the-extra-padding-in-a-gridview-in-android/27321360#27321360 –

Trả lời

20

Để giải quyết vấn đề của tôi, tôi sử dụng GridView này:

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

Điều quan trọng nhất là clipChildren tài sản.

+4

được thiết clipChildren cần thiết mặc dù? Tài liệu nói rằng mặc định là http://developer.android.com/reference/android/view/ViewGroup.html#attr_android:clipChildren – roarster