ViewPager intercepts all x-axis onTouch events. How to disable? ViewPager intercepts all x-axis onTouch events. How to disable? android android

ViewPager intercepts all x-axis onTouch events. How to disable?


You are right, I believe every scrolling container intercepts touch events, but you can prevent it. You can put a touch listener on your layout:

public boolean onTouch(View v, MotionEvent event) {    switch (event.getAction()) {    case MotionEvent.ACTION_MOVE:         pager.requestDisallowInterceptTouchEvent(true);        break;    case MotionEvent.ACTION_UP:    case MotionEvent.ACTION_CANCEL:        pager.requestDisallowInterceptTouchEvent(false);        break;    }}


Similar situation (but not using a ViewPager), putting this in the view that needed the touch event worked for me. Add checks for MotionEvents other than ACTION_MOVE if applicable to your use case.

@Overridepublic boolean onTouchEvent(MotionEvent event) {    if (event.getAction() == MotionEvent.ACTION_MOVE) {        this.getParent().requestDisallowInterceptTouchEvent(true);        return true;    } else {        return super.onTouchEvent(event);    }}


neutrino was right!

getParent().requestDisallowInterceptTouchEvent(true);

once the viewpager access the touchEvent Intercept,the child view in it can got the event.enter image description here


I use a FrameLayout in viewpager to got the DrawerLayout Effect(I need it not match the height of screen,so I can't use drawerlayout or navigation drawer).
It really helps!