解决一个页面同时存在ScrollView和Viewpager时viewpager页面滑动不畅

当我们在开发中,难免会遇到一个页面同时存在MyScrollView和Viewpager,这时我们会发现viewpager页面滑动很吃力,滑动不畅的问题,这是因为当我们水平滑动发生倾斜,这时事件就会被scrollView截获,而ViewPager则不能得到事件,所以我们要解决这个问题,必须自定义一个MyScrollView继承ScrollView,把布局中的scrollview换成我们自定义的scrollview即可,下面是代码:

public class MyScrollView extends MyScrollView {

private GestureDetector mGestureDetector;

public MyScrollView (Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

public MyScrollView (Context context, AttributeSet attrs) {

super(context, attrs);

mGestureDetector = new GestureDetector(context, new YScrollDetector());

}

public MyScrollView (Context context) {

super(context);

}

@Override

public boolean onInterceptTouchEvent(MotionEvent ev) {

return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev);

}

class YScrollDetector extends SimpleOnGestureListener {

@Override

public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {

/**

* 如果我们滚动更接近水平方向,返回false,让子视图来处理它

*/

return (Math.abs(distanceY) > Math.abs(distanceX));

}

}


}


你可能感兴趣的:(viewpager,scrollview,滑动不畅)