2013-02-25 73 views
12

我做這在Android 1.6及2.2 ...如何工作,當滾動視圖內的列表視圖?

我有一個滾動型在活動(在滾動型的所有內容)...

和第二,一個的ListView在活動....

當我滾動的ListView,當時是滾動型滾動,但ListView的滾動不工作 ...

我提供問題,我有的scatch ...

如果任何人有這種解決方案,那麼請共享...

enter image description here

+0

羅曼蓋伊(安卓工程師)[建議](http://stackoverflow.com/a/3496042/1521536),你應該不*** ***使用'滾動型內滾動視圖'。這個問題似乎也是該答案問題的重複。 – 2013-02-25 08:00:53

+0

可能的重複[如何將一個ListView放入ScrollView而不崩潰?](http://stackoverflow.com/questions/3495890/how-can-i-put-a-listview-into-a-scrollview-沒有它崩潰) – 2013-02-28 11:58:22

回答

33

這裏parentScroll =你的主滾動型 和childScroll =您的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 2013-02-25 13:59:29

+0

@kyogs:非常感謝你:)對我來說完美的作品。 – 2013-06-27 06:27:38

+0

作品像一個魅力:) – 2013-12-04 14:31:57

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; 
     } 
    });