当触摸事件来自嵌套视图(例如HorizontalScrollView等)内部时,如何防止在androidx ViewPager2中滑动?
我希望通过覆盖ViewPager2.onInterceptTouchEvent()
来实现这一点,但是由于ViewPager2是final
,因此无法将其子类化。
现有解决方案(下面列出)处理的是较旧的ViewPager,可以将其子类化。
根据我尝试过的答案之一的建议:
private ViewPager2 viewPager2;
...
HorizontalScrollView nestedScrollView = pagerView.findViewById(R.id.scrollview);
nestedScrollView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v,MotionEvent event) {
viewPager2.requestDisallowInterceptTouchEvent(true);
return false;
}
});
// nestedScrollView - the HorizontalScrollView inside a ViewPager2 item
// viewPager2 - the ViewPager2 instance
但这似乎没有任何作用。
ViewPager2具有onInterceptTouchEvent()inherited from ViewGroup,但我看不到在最终类中覆盖它的方法。
重新实现整个ViewPager2似乎不是一个明智的解决方案-原始类的长度为1607行,而且它使用的是包未导出的类。
我看过的其他类似问题: