2015-06-01 17 views
5

Tôi có một bố trí đơn giản, một listview, và hai biểu tượng cho các tùy chọn lọc và sắp xếp. Khi tôi nhấp vào một trong hai tùy chọn, tôi có bố cục được đặt phía trên chế độ xem danh sách và chỉ bao gồm 60% màn hình do đó làm cho listview bên dưới hiển thị một phần. Những gì tôi muốn đạt được là để vô hiệu hóa di chuyển cho listview đó cũng có, không có mục listview nên được click miễn là lớp phủ có thể nhìn thấy.Android vô hiệu hóa cuộn và bấm cho listview

tôi đã cố gắng sử dụng

setEnabled(false) 
setClickable(false) 

trên listview nhưng nó không thực hiện bất kỳ sự khác biệt. Những cách khác để đạt được điều này là gì.

Trả lời

0

Bạn có thể sử dụng cho việc vô hiệu hóa scrollview mẹ

parentview.requestDisallowInterceptTouchEvent (true);

nếu lớp phủ hiển thị.

+0

sẽ làm cho nó hoàn hảo. Cảm ơn –

+0

nếu như vậy thì u có thể chấp nhận ans của tôi? – Sivaranjani

0

Để vô hiệu hóa di chuyển bạn có thể sử dụng OnTouchListener()

listView.setOnTouchListener(new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_MOVE) { 
      return true; // Indicates that this has been handled by you and will not be forwarded further. 
     } 
     return false; 
    } 
}); 

HOẶC

listView.setScrollContainer(false); 

Đối với việc vô hiệu hóa các nhấp chuột, Trong tùy chỉnh của bạn ArrayAdapter ghi đè phương pháp isEnabled như sau

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

điều gì sẽ xảy ra nếu tôi muốn bật lại khả năng nhấp? –

+0

"trả về true"; trong isEnabled. Bạn có thể sử dụng một boolean và trả lại dựa trên nhu cầu của bạn. –

+0

nếu tôi không sai isEnabled sẽ hoạt động khi tôi tạo danh sách ban đầu, đó là khi tôi tải danh sách lần đầu tiên, tôi hiểu rằng trong trường hợp này làEnabled sẽ hoạt động dựa trên bất kỳ điều kiện nào tôi áp dụng và đặt khả năng nhấp của chế độ xem, nhưng có thể thậm chí làm việc sau khi listview đã được tạo và sau đó sau đó trên một số người dùng nhấp vào hành động tôi muốn quyết định khả năng click? Tôi hơi bối rối về mặt trận này. –

1

Tôi đề xuất rằng lớp phủ wil Tôi có mặt trên toàn màn hình. Sau đó, bạn có thể bọc lớp phủ với bố cục tuyến tính (dọc) với trọng số (để đạt được tỷ lệ 60%/40%). Trong bố cục tuyến tính, đặt lớp phủ hiện tại của bạn làm con đầu tiên và khi con thứ hai đặt chế độ xem trong suốt sẽ chặn sự kiện chạm. Bằng cách này, bạn sẽ không cần thực hiện bất kỳ sửa đổi nào đối với chế độ xem danh sách.

+0

Tại sao không làm cho bộ chứa tùy chọn bộ lọc là con của lớp phủ (bạn sẽ cần phải bố trí lớp phủ/bố cục khung). Bạn đã thử những gì tôi đề nghị? –

+0

Tôi lấy đề xuất của bạn, nhưng thay vì sử dụng con thứ hai trong suốt để chặn sự kiện chạm, mặt nạ lớp phủ bán trong suốt của tôi có hiệu quả với tôi. –

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