如何使 ViewPager 从父视图滚动?

How to make ViewPager scrollable from the parent view?

我正在实现如下所示的应用程序教程。

我做了一个又漂亮又小的 ViewPager 并把它放在模型上 ImageView。问题是当我尝试从其他地方滚动时 ViewPager 没有滚动,比如在视图寻呼机指示器周围。这很自然,因为 ViewPager 无法监听自身之外的触摸事件。

  1. 当我尝试从其他地方滚动时,如何使 ViewPager 滚动?

我试过 detect touch eventsViewPager 的父级上,但我不知道如何将 onFling()onScroll() 关联到 ViewPager的滚动。

  1. 如果有更好的实施这种UI的建议,会是什么?

  2. 是否有类似的教程或自定义库?

为外部 ViewPager 设置一个 View.OnTouchListener 并检查内部是否在显示内部 ViewPager 的正确页面上。如果内部 ViewPager 不是第一个或最后一个,你可以将 MotionEvent 分派到第二个 dispatchTouchEvent(MotionEvent me)

outerViewPager.setOnTouchListener(new OnTouchListener()
    {

        @Override
        public boolean onTouch(View v, MotionEvent event)
        {
            if(outerViewPagerAdapter.isCurrentPageHaveInnerViewPager() &&
                ! innerViewPagerAdapter.isOnFirstOrLastPage()){
                innerViewPagerAdapter.dispatchTouchEvent(event);
                return true;
            }
            return super.onTouch(event); //outer will get touch events
        }
   });

如果需要,您也可以在派遣前调整 x/y 事件中的触摸线