2010-07-01 34 views
10

Tôi đang cố tắt tính năng tô sáng của các đối tượng trong GridView trong Android 2.2.Tắt hoàn toàn chế độ xem GridView của Android (tắt lựa chọn)

Tôi tìm thấy this other answer nói rằng tôi nên đặt bộ chọn thành Màu trong suốt có thể hiển thị màu (android:listSelector="@android:color/transparent"), nhưng chế độ xem trong GridView của tôi vẫn bị mờ khi tôi chọn chúng.

Tôi chỉ đang sử dụng GridView để hiển thị các đối tượng tĩnh trong lưới. Không có đối tượng nào trong số này sẽ được chọn. Sẽ tốt hơn nếu chỉ sử dụng chế độ xem cơ bản và vẽ hình ảnh của tôi theo cách thủ công?

+0

kiểm tra điều này ra https://stackoverflow.com/questions/18415844/disable-gridview-item-onclick-and-enable-only-on-child-view – sushmita

Trả lời

22

Ok, có vẻ như tôi đã tìm thấy câu trả lời.

Trong định nghĩa của Adaptor của bạn cho GridView, bạn sẽ phải ghi đè lên các phương pháp sau đây:

@Override 
public boolean areAllItemsEnabled() 
{ 
    return false; 
} 

@Override 
public boolean isEnabled(int position) 
{ 
    return false; 
} 

Điều này sẽ khiến tất cả các mục trong mạng lưới của bạn là không thể lựa chọn, nhưng nó sẽ nhận được loại bỏ các điểm nổi bật hoàn toàn.

+2

Nếu bạn cần tập trung vào trẻ em hãy thử android: descendantFocusability = "afterDescendants" – eveliotc

+0

cảm ơn rất nhiều ở đây, nếu bạn có các đối tượng tùy chỉnh trong danh sách của bạn (xem ..) và ghi đè onclicklistener của họ, bạn có thể chọn chúng: =) hoàn hảo :) – cV2

+0

lựa chọn mục vô hiệu hóa này hoàn toàn – coderek

1

Chỉ Set v.setOnClickListener(null);

+0

Đây là phương pháp Adapt.getView của bạn – jfleong

+0

I vẫn cần thiết để có thể nhận được các sự kiện nhấp cho GridView, nhưng tôi chắc chắn rằng nó sẽ hoạt động trong các tình huống khác. – Kenny

+0

điều này sẽ tạo ra một ngoại lệ – EyadMhanna

36

Để giữ các mục có thể nhấp, bạn nên sử dụng bên dưới attr. trong xml của bạn GridView:

android: listSelector = "# 00000000"

Xem thêm: https://stackoverflow.com/a/2866074/928591

+2

Tôi nghĩ rằng đây phải là câu trả lời được chấp nhận ... – Radu

+1

@Radu Giải pháp này được đề cập rõ ràng trong câu hỏi là không hoạt động. – blahdiblah

+0

sử dụng tốt hơn android: listSelector = "@ null" –

0

Nếu bạn chỉ muốn vô hiệu hóa các khía cạnh hình ảnh của sự lựa chọn, bạn có thể làm như sau:

gridview.getSelector().setAlpha(0); 
Các vấn đề liên quan