当您使用setPageMargin为ViewPager设置负边距时,页面将变得小于ViewPager的整个宽度。这样做的副作用是用户可以使用一个长手势多次更改活动页面。
有没有办法防止单个手势多次更改页面?
我试图阻止运动事件到达寻呼机,但你必须让MotionEvent.ACTION_UP通过,否则寻呼机无法正常工作。向上还会触发 ViewPager 中基于速度的计算,并在触发时导致额外的页面更改。
要么我需要重置拖动的速度,要么我需要以某种方式防止额外的页面变化。
我已经使用了这个问题的答案中描述的方法来停止滚动,但是所描述的ACTION_UP问题阻止了我完成它。是否可以在ViewPager上禁用滚动
有什么想法吗?
我不知道你到底想在这里实现什么,但与其使用负边距,不如在PagerAdapter上使用getPageWidth()来使页面宽度小于ViewPager宽度?
好吧,我想出了一个“hacky”解决方案,包括将源代码从ViewPager复制到你的项目中,并修改一点performdrag(),这样它就不会拖曳多个页面。
这种黑客行为有一些假设:
您可以检查示例项目,并查看页面修改差异
这不是一个漂亮或优雅的解决方案,但它很管用,我终于用同样的问题解决了3个月前的问题,所以经理很高兴:)