2013年8月8日星期四

ScrollView not work in ViewPager sliding Issue

 

This paper describes how to solve ViewPager in ScrollView slide often fail, not the normal sliding problem .

 

solution need only close to horizontal scrolling ScrollView does not handle events by his son View (ie, where the ViewPager) treatment can rewrite ScrollView's onInterceptTouchEvent function, as follows:

 
  
   
     [java]      view plain      copy    
  
  
       
  1. package cc.newnews.view;
  2.    
  3.    
  4. import android.content.Context;
  5.    
  6. import android.util.AttributeSet;
  7.    
  8. import android.view.GestureDetector;
  9.    
  10. import android.view.GestureDetector.SimpleOnGestureListener;
  11.    
  12. import android.view.MotionEvent;
  13.    
  14. import android.widget.ScrollView;
  15.    
  16.    
  17. public class VerticalScrollView extends ScrollView {
  18.    
  19.    
  20. private GestureDetector mGestureDetector;
  21.    
  22.    
  23. public VerticalScrollView (Context context, AttributeSet attrs) { ;
  24.    
  25. super (context, attrs) ;
  26.    
  27. mGestureDetector = new GestureDetector (context, ; new YScrollDetector ());
  28.    
  29. }
  30.    
  31.    
  32. @ Override
  33.    
  34. public boolean < span> onInterceptTouchEvent (MotionEvent ev) {
  35.    
  36. return < span class = "keyword"> super . onInterceptTouchEvent (ev)
  37.    
  38. && mGestureDetector.onTouchEvent (ev) ;
  39.    
  40. }
  41.    
  42.    
  43. class YScrollDetector extends SimpleOnGestureListener {
  44.    
  45.    
  46. @ Override
  47.    
  48. public boolean onScroll (MotionEvent e1, MotionEvent e2,
  49.    
  50. float distanceX, float distanceY) {
  51.    
  52. / **
  53.    
  54. * If we closer to horizontal scrolling, returns false, so the child views to deal with it
  55.    
  56. * / ;
  57.    
  58. return (Math.abs (distanceY)> Math.abs (distanceX));
  59.    
  60. }
  61.    
  62. }
  63.    
  64. }
  65.   
 
 

 

then changed ScrollView xml in that package. rewritten ScrollView class name) can be.

 

This method is also applicable to other View ListView in ScrollView not scrolling.

没有评论:

发表评论