2013-02-25 16 views
12

I robi to w Android 1.6 i 2.2 ...Jak pracować, gdy listview znajduje się wewnątrz przewijania?

Mam jeden Scrollview w Działaniu (Cała zawartość w Scrollview) ...

a po drugie to, że jeden ListView w Działaniu ....

Kiedy Przewiń ListView w tym czasie Scrollview przewija ale ListView za Scroll nie działa ...

I dostarczyć scatch z problemu który mam ...

Jeśli ktoś ma rozwiązanie tego, to proszę podzielić ...

enter image description here

+0

Romain Guy (Android inżynier) [zasugerował] (http://stackoverflow.com/a/3496042/1521536), które nie powinny *** *** użyć przewijalną widok wewnątrz 'Scrollview '. To pytanie wydaje się również duplikatem tego pytania. –

+0

możliwy duplikat [Jak mogę umieścić ListView w ScrollView bez jego zwijania?] (Http://stackoverflow.com/questions/3495890/how-can-i-put-a-listview-into-a-scrollview- bez zawijania) –

Odpowiedz

33

tutaj parentScroll = głównym Scrollview i childScroll = Twój ListView

parentScroll.setOnTouchListener(new View.OnTouchListener() { 

       public boolean onTouch(View v, MotionEvent event) { 
        Log.v("PARENT", "PARENT TOUCH"); 
        findViewById(R.id.child_scroll).getParent() 
          .requestDisallowInterceptTouchEvent(false); 
        return false; 
       } 
      }); 

    childScroll.setOnTouchListener(new View.OnTouchListener() { 

       public boolean onTouch(View v, MotionEvent event) { 
        Log.v("CHILD", "CHILD TOUCH"); 
        // Disallow the touch request for parent scroll on touch of 
        // child view 
        v.getParent().requestDisallowInterceptTouchEvent(true); 
        return false; 
       } 
      }); 
+0

WC:) ........... – kyogs

+0

@kyogs: Bardzo dziękuję :) Działa idealnie dla mnie. –

+0

Działa jak urok :) –

5
svView.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      int action = event.getAction(); 
      switch (action) { 
      case MotionEvent.ACTION_DOWN: 
       // Disallow ScrollView to intercept touch events. 
       v.getParent().requestDisallowInterceptTouchEvent(true); 
       break; 

      case MotionEvent.ACTION_UP: 
       // Allow ScrollView to intercept touch events. 
       v.getParent().requestDisallowInterceptTouchEvent(false); 
       break; 
      } 

      // Handle ListView touch events. 
      v.onTouchEvent(event); 
      return true; 
     } 
    }); 
Powiązane problemy