ViewPager2 的 OnTouchListener
OnTouchListener for ViewPager2
我最近将应用程序中的 ViewPager 更改为 ViewPager2。我已经为 viewPager 对象设置了一个 onTouchListener 来检测手势(onFling 和 onLongPress),例如:
mViewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
mDetector.onTouchEvent(motionEvent); // use the custom gesture detector to detect onFling and onLongPress touch events.
return true;
}
});
viewPager 的 onTouchListener 在重构到 ViewPager2 之前工作正常。我尝试了 ,但没有用。
有人知道为什么会出现这种情况以及我该如何解决它吗?
因为ViewPager2是一个ViewGroup,最终的目标是里面的recyclerview。没有调用setOnTouchListener,因为recyclerview拦截了事件,先调用了onTouchEvent
添加自定义onTouch逻辑的正确方法是调用
mViewPager.getChildAt(0).setOnTouchListener{...}
添加自定义onTouch逻辑的正确方法是调用
viewPager2.getChildAt(viewPager2.getCurrentItem()).setOnTouchListener(...)
我最近将应用程序中的 ViewPager 更改为 ViewPager2。我已经为 viewPager 对象设置了一个 onTouchListener 来检测手势(onFling 和 onLongPress),例如:
mViewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
mDetector.onTouchEvent(motionEvent); // use the custom gesture detector to detect onFling and onLongPress touch events.
return true;
}
});
viewPager 的 onTouchListener 在重构到 ViewPager2 之前工作正常。我尝试了
有人知道为什么会出现这种情况以及我该如何解决它吗?
因为ViewPager2是一个ViewGroup,最终的目标是里面的recyclerview。没有调用setOnTouchListener,因为recyclerview拦截了事件,先调用了onTouchEvent
添加自定义onTouch逻辑的正确方法是调用
mViewPager.getChildAt(0).setOnTouchListener{...}
添加自定义onTouch逻辑的正确方法是调用
viewPager2.getChildAt(viewPager2.getCurrentItem()).setOnTouchListener(...)