2012-04-23 46 views
8

Tôi có một hộp chứa FrameLayout chứa nhiều thứ (bao gồm ScrollView, WebView, ViewPager ...).Làm cách nào để tắt tất cả các sự kiện liên lạc trên tất cả trẻ em của một ViewGroup?

Tôi muốn để có thể kích hoạt các sự kiện onClick vào thùng chứa này, nhưng có vẻ như một số ScrollView, WebViewViewPager chặn các sự kiện liên lạc, vì sự kiện onClick chỉ kích hoạt khi tôi bấm vào các bộ phận của vùng chứa không có bất kỳ thứ gì trong số họ ...

Làm cách nào để vô hiệu hóa tất cả sự kiện chạm trên con của vùng chứa để có thể kích hoạt onClick ở bất kỳ đâu trong đó?

CẬP NHẬT

Ý tưởng là để có một cái gì đó giống như công việc quản lý trong Android 3.2, ví dụ: nơi có thể nhìn thấy màn hình hiện tại của ứng dụng được hiển thị như một biểu tượng giảm, mà có thể được nhấp vào.

Cảm ơn

Trả lời

15

Có thể là tôi đã hiểu lầm gì đó, nhưng tôi đoán câu trả lời cho câu hỏi của bạn rất đơn giản: Nếu bạn không muốn cử không ai trong số những sự kiện liên lạc cho trẻ em - vì vậy bạn chỉ cần phải ghi đè ViewGroup.onInterceptTouchEvent (MotionEvent ev)API reference như thế này:

public boolean onInterceptTouchEvent (MotionEvent ev){ 
    return true; 
} 

Theo tài liệu android, điều này có nghĩa là ViewGroup của bạn sẽ luôn chặn tất cả các sự kiện liên lạc và không gửi chúng cho trẻ em. Tất cả chúng sẽ được chuyển đến phương thức ViewGroup.onTouchEvent(MotionEvent ev) của Nhóm ViewGroup của bạn.

0

Bạn có thể vô hiệu hóa chúng như thế này:

FrameLayout parent = (FrameLayout)findViewById(some_id); 
disableChildsOnTouch(parent) 


public void disableChildsOnTouch(ViewGroup viewGroup){ 
    int cnt = viewGroup.getChildCount(); 
    for (int i = 0; i < cnt; i++){ 
     View v = viewGroup.getChildAt(i); 
     if (v instanceof ViewGroup){ 
      disableChildsOnTouch((ViewGroup)v); 
     } else { 
      v.setOnTouchListener(null); 
      v.setOnClickListener(null); 
      //v.SETYOURLISTENER(null) 
     } 
    } 
} 
+0

ScrollView vẫn cuộn và vùng chứa onClick vẫn chưa được kích hoạt khi tắt tất cả các con ... :( – jul

+0

không nên cuộn scrollView? Nếu không bạn có thể kiểm tra 'Xem v' ở trên nếu đó là scrollView và tắt Tôi không thể cho bạn biết nhiều hơn với những thông tin ít hơn như vậy.Bạn có thể ít nhất đăng XML của bạn để cho tôi thấy, những gì có thể là vấn đề –

+0

Tôi đã cập nhật câu hỏi của tôi với lý do tại sao tôi muốn làm điều đó. t nghĩ rằng cần thêm thông tin: Tôi chỉ muốn có thể kích hoạt sự kiện onClick trên một nhóm xem chứa các chế độ xem như scrollview, viewpager ... – jul

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