当您使用setPageMargin为ViewPager设置负边距时,页面将变得小于ViewPager的整个宽度。这样做的副作用是用户可以使用一个长手势多次更改活动页面。
有没有办法阻止单个手势多次更改页面?
我试图阻止动作事件到达寻呼机,但您必须让MotionEvent.ACTION_UP通过或者寻呼机无法正常工作。 up还会触发ViewPager中基于速度的计算,并在触发时导致额外的页面更改。
我需要重置拖动的速度,或者我需要以某种方式阻止其他页面更改。
我已经使用了这个问题的答案中的方法来停止滚动但是所描述的ACTION_UP问题阻止我完成它。 Is it possible to disable scrolling on a ViewPager
有什么想法吗?
答案 0 :(得分:1)
我不确切地知道你想要在这里实现什么,但是getPageWidth()上的用户PagerAdapter不会使用负边距而不是更好地使页面宽度小于ViewPager宽度?
好的,我提出了一个'hacky'解决方案,包括将ViewPager中的源代码复制到您的项目中并修改一点performDrag(),因此它不会拖动多个页面。
这个Hack适用于一些假设:
您可以查看sample project和ViewPager modifications diff
这不是一个美丽或优雅的解决方案,但它确实有效,而且我最终会用同样的问题关闭一张3个月大的票,所以经理高兴:)