Лучшее решение, пока я не получу, - это использовать gestDetector.SimpleOnGestureListener внутри на recyclerView.addOnItemTouchListener (this).
Шаг-1: в методе OnCreate ()
gestureDetector = new GestureDetector(getActivity(), new GestureListener());
Шаг-2 : Реализовать метод addonitemtouchlistenr recyclerView-
recyclerView.addOnItemTouchListener(this);
Шаг 3: Создать класс GestureListener, расширяющий GestureDetector.SimpleOnGestureListener.
public class GestureListener extends GestureDetector.SimpleOnGestureListener {
private final int Y_BUFFER = 10;
@Override
public boolean onDown(MotionEvent e) {
// Prevent ViewPager from intercepting touch events as soon as a DOWN is detected.
// If we don't do this the next MOVE event may trigger the ViewPager to switch
// tabs before this view can intercept the event.
Log.d("vp", "true1");
recyclerView.getParent().requestDisallowInterceptTouchEvent(true);
return super.onDown(e);
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
if (Math.abs(distanceX) > Math.abs(distanceY)) {
Log.d("vp2", "true");
// Detected a horizontal scroll, allow the viewpager from switching tabs
recyclerView.getParent().requestDisallowInterceptTouchEvent(false);
} else if (Math.abs(distanceY) > Y_BUFFER) {
// Detected a vertical scroll prevent the viewpager from switching tabs
Log.d("vp3", "false");
recyclerView.getParent().requestDisallowInterceptTouchEvent(true);
}
return super.onScroll(e1, e2, distanceX, distanceY);
}
}
Шаг 4: вызвать gestDetector.onTouchEventEvent (e) from) ().
@Override
public boolean onInterceptTouchEvent(@NonNull RecyclerView rv, @NonNull MotionEvent e) {
gestureDetector.onTouchEvent(e);
return false;
}