2010-10-27 42 views
35

Tôi có GridView trong ứng dụng Android có một số ImageView trong đó. Không gian trên màn hình của tôi bị giới hạn và tôi muốn các hình ảnh chiếm nhiều không gian có sẵn nhất có thể. Thật không may, GridView luôn để lại 5 pixel của không gian màn hình trống xung quanh cạnh bên ngoài của ImageViews (khoảng cách giữa ImageViews được đặt với khoảng cách ngang/dọc và hoạt động chính xác). Không gian trống hoạt động giống như một lề xung quanh ImageViews, nhưng tôi không thể loại bỏ nó. Có ai biết những gì gây ra này "biên giới" và làm thế nào tôi có thể thoát khỏi nó (hoặc ít nhất là làm cho nó nhỏ hơn)? Cảm ơn.Tại sao có thêm pixel trên GridView Android của tôi?

Cập nhật: Tôi đang tạo ImageView bằng cách tăng một tệp .xml trong phương thức getView() của lớp Bộ điều hợp của tôi. Đây là xml Tôi lạm phát:

<ImageView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="#FF00FF" /> 

tôi xác định GridView trong file xml bố trí của tôi như thế này:

<GridView 
    android:id="@+id/mygrid" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/abutton" 
    android:layout_marginBottom="8dp" 
    android:numColumns="5" android:background="#FF0000"/> 

Dưới đây là một ảnh chụp màn hình của vấn đề. Vùng màu đỏ trong GridView của tôi. Các vùng màu tím là ImageView của tôi. Hình ảnh được hiển thị là một hình chữ nhật màu xanh đơn giản với một trung tâm trong suốt. Hình ảnh có kích thước 45x45 pixel (nhưng chỉ 30x30 pixel trong ứng dụng của tôi - Tôi sẽ lo lắng về điều đó sau). Đường viền màu đỏ xung quanh màu tím là thứ tôi đang cố gắng loại bỏ.

alt text

Trả lời

67

Cảm ơn lời khuyên của mọi người, nhưng hóa ra câu trả lời là ở đâu đó mà chúng tôi không mong đợi. Các pixel phụ được tạo ra bởi bộ chọn đã được gán cho GridView của tôi. Tôi đoán bộ chọn mặc định là hình ảnh 9-bit có viền 5 pixel xung quanh. Khi tôi tạo và gán một bản vá 9 có đường viền nhỏ hơn (hoặc không có viền nào cả - chỉ là tệp .png bình thường), khoảng trống thừa trong GridView của tôi đã biến mất.

+10

+1, bạn đã lưu tôi ít nhất 4 giờ dùng thử và lỗi. Có vẻ như một cách rõ ràng để chỉ định "không có hình ảnh" trong trường hợp này là 'android: listSelector = "@ android: id/empty" ' – mvds

+0

@mvds android: listSelector =" @ android: id/empty "gây ra một ngoại lệ. Có vẻ như GridView không thể xử lý listSelector này. Thay vào đó, tôi đặt bộ chọn thành màu trong suốt. – Janusz

+30

@Janusz đúng, trên một số thiết bị '@android: id/empty' dẫn đến sự cố. '@android: color/transparent' có vẻ là lựa chọn đúng đắn. – mvds

0

Bạn có cố gắng thiết lập các padding trên ImageView và horizontalSpacingverticalSpacing trên GridView 0?

+0

Cảm ơn. Tôi đã thử điều đó. Dường như không giúp được gì. Tôi đã cập nhật bài đăng gốc của mình để bao gồm mã cho GridView và ImageViews của mình. –

+0

Kích thước hình ảnh bạn đang đưa vào chế độ xem lưới là bao nhiêu? Có phải tất cả họ đều giống nhau không? Bạn có thể cần phải điều chỉnh cách họ mở rộng quy mô để chiếm toàn bộ không gian. http://developer.android.com/reference/android/widget/ImageView.ScaleType.html Ngoài ra, hãy xem bố cục của bạn trong trình xem sơ đồ thừa kế để xem ai sở hữu không gian đó. –

+0

Tôi đã thiết lập màu nền cho các điều khiển của mình, để tôi có thể xem ai sở hữu không gian màn hình (xem câu hỏi đã chỉnh sửa của tôi). GridView là chủ sở hữu, nhưng thay đổi padding không làm giảm diện tích sở hữu (mặc dù nó có thể mở rộng nó). –

0

Thử đặt layout_height và layout_width của chế độ xem hình ảnh thành fill_parent.

iv.setLayoutParams(ViewGroup.LayoutParams(ViewGroup.MATCH_PARENT, ViewGroup.MATCH_PARENT)); 

sẽ tự động thực hiện, tôi tin tưởng.

+0

Tôi phải làm điều này cho Android 2.1, MATCH_PARENT đã không tồn tại trở lại sau đó . Tôi đã thử FILL_PARENT và nó vẫn không hoạt động. –

+0

MATCH_PARENT = FILL_PARENT, tôi không biết tại sao họ thay đổi nó. –

+4

Chúng tôi đã thay đổi nó vì 'FILL_PARENT' ngụ ý" lấp đầy * không gian còn sót lại * ", trong phần lớn các trường hợp không phải là hành vi thực tế.:) – adamp

0

Đối với tôi không có gì giúp trừ thiết lập các thuộc tính android:columnWidthtrong xml (ví dụ android:columnWidth="50dp")

Các vấn đề liên quan