android - 将水平viewpager与垂直viewpager结合使用

时间:2014-12-14 11:47:34

标签: java android android-viewpager

我想将默认的水平ViewPager与某种vertical ViewPager组合在一起。我的方法是水平ViewPager提供的Fragments是子类化垂直ViewPager。

public class SubWebViewFragment extends Fragment, VerticalViewPager {
}

因此,水平ViewPager提供的每个Fragment应该同时充当VerticalViewPager,构建某种矩阵。另外,我必须有可能去这个矩阵中的某个页面。例如。我想选择水平ViewPager的第2页,在这个页面中我想要转到第3页的垂直ViewPager。

// pseudo code
HorizontalViewPager.setCurrentItem(1, true);
activeHorizontalPage.getVerticalViewPager.setCurrentItem(2, true);

我对如何解决这个问题感到有点迷失。

3 个答案:

答案 0 :(得分:12)

我构建了一个将水平viewpager (父级)与垂直浏览器(每个子级)相结合的解决方案。 我在垂直viewpager上覆盖了以下方法:

  • public boolean onInterceptTouchEvent(MotionEvent ev)
  • public boolean onTouchEvent(MotionEvent ev)

当用户在每个孩子上触发这些事件时,他们会将其传递给父母。然后,如果事件是垂直的,则子进程处理它,否则,如果事件是水平的,则父进程处理它。

看看我的DoubleViewPager图书馆,我在那里实施了这个策略。

答案 1 :(得分:2)

GitHub上的这个DoubleViewPager项目似乎已经实现了你所要求的简单版本。他有一个自定义的Horizo​​ntalViewPager和VerticalViewPager派生自ViewPager类,允许您要求的页面堆栈结构。

答案 2 :(得分:-1)

您是否考虑使用listview而不是垂直viewpager也尝试查看Twowayview library