当触摸事件来自嵌套视图(例如 HorizontalScrollView 等)时,如何防止在androidx ViewPager2 中滑动?
我希望通过覆盖可以实现这一点,ViewPager2.onInterceptTouchEvent()但是由于 ViewPager2final不能被子类化。
现有的解决方案(见下表)处理与旧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
Run Code Online (Sandbox Code Playgroud)
但这似乎没有任何效果。
ViewPager2 具有从 ViewGroup 继承的onInterceptTouchEvent()但我没有看到在最终类上覆盖它的方法。
重新实现整个 ViewPager2 似乎不是一个明智的解决方案——原始类有 1607 行长,而且它使用的类不是由包导出的。
我看过的其他类似问题:
我需要设计以下屏幕,我需要你的建议:

说明:
标题是静态/固定的,我不需要对它做任何事情.
黄色:这是有趣的部分,我需要设计一个ViewPager类似的屏幕,能够向左/右滚动最多4个屏幕.
红色:在每个屏幕中,我需要添加一个可滚动的表格/网格,如果它不适合屏幕大小.
绿色:可以使用屏幕底部的绿色按钮或通过滚动来完成页面切换ViewPager.
问题是:这种行为可以使用ViewPager或者我应该使用Fragments吗?如果Fragment是要走的路,那么我将如何使用滑动手势实现页面切换?如果它是一个ViewPager然后如何添加内部滚动以及如何使用底部的按钮控制它?
任何帮助将不胜感激,谢谢.
android ×2