如何将ViewPager页面更改限制为每个手势一个

时间:2013-12-06 13:45:54

标签: android android-viewpager

当您使用setPageMargin为ViewPager设置负边距时,页面将变得小于ViewPager的整个宽度。这样做的副作用是用户可以使用一个长手势多次更改活动页面。

有没有办法阻止单个手势多次更改页面?

我试图阻止动作事件到达寻呼机,但您必须让MotionEvent.ACTION_UP通过或者寻呼机无法正常工作。 up还会触发ViewPager中基于速度的计算,并在触发时导致额外的页面更改。

我需要重置拖动的速度,或者我需要以某种方式阻止其他页面更改。

我已经使用了这个问题的答案中的方法来停止滚动但是所描述的ACTION_UP问题阻止我完成它。 Is it possible to disable scrolling on a ViewPager

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我不确切地知道你想要在这里实现什么,但是getPageWidth()上的用户PagerAdapter不会使用负边距而不是更好地使页面宽度小于ViewPager宽度?

修改

好的,我提出了一个'hacky'解决方案,包括将ViewPager中的源代码复制到您的项目中并修改一点performDrag(),因此它不会拖动多个页面。

这个Hack适用于一些假设:

  1. 它使用getPageWidth()来确定页面的相对大小
  2. 所有网页都必须返回相同的getPageWidth()
  3. 您可以查看sample projectViewPager modifications diff

    这不是一个美丽或优雅的解决方案,但它确实有效,而且我最终会用同样的问题关闭一张3个月大的票,所以经理高兴:)