【问题标题】:How to limit ViewPager page changes to one per gesture如何将 ViewPager 页面更改限制为每个手势一个
【发布时间】:2013-12-10 00:44:54
【问题描述】:

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

有没有办法防止一个手势多次更改页面?

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

要么我需要重新设置拖动速度,要么我需要以某种方式阻止额外的页面更改。

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

有什么想法吗?

【问题讨论】:

    标签: android android-viewpager


    【解决方案1】:

    我不知道你到底想在这里实现什么,但不是使用负边距对PagerAdapter 上的用户getPageWidth() 来说不是更好,以使页面宽度小于 ViewPager 宽度?

    编辑

    好的,我想出了一个“hacky”解决方案,包括将源代码从 ViewPager 复制到您的项目中并稍微修改一下 performDrag(),这样它就不会拖​​动超过一页。

    这个 Hack 有一些假设:

    1. 它使用getPageWidth() 来确定页面的相对大小
    2. 所有页面必须返回相同的getPageWidth()

    您可以查看sample projectViewPager modifications diff

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-15
      • 1970-01-01
      相关资源
      最近更新 更多