当前位置: 首页 > 知识库问答 >
问题:

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

常博裕
2023-03-14

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

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

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

要么我需要重置拖动的速度,要么我需要以某种方式防止额外的页面变化。

我已经使用了这个问题的答案中描述的方法来停止滚动,但是所描述的ACTION_UP问题阻止了我完成它。是否可以在ViewPager上禁用滚动

有什么想法吗?

共有1个答案

宋宏儒
2023-03-14

我不知道你到底想在这里实现什么,但与其使用负边距,不如在PagerAdapter上使用getPageWidth()来使页面宽度小于ViewPager宽度?

好吧,我想出了一个“hacky”解决方案,包括将源代码从ViewPager复制到你的项目中,并修改一点performdrag(),这样它就不会拖曳多个页面。

这种黑客行为有一些假设:

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

您可以检查示例项目,并查看页面修改差异

这不是一个漂亮或优雅的解决方案,但它很管用,我终于用同样的问题解决了3个月前的问题,所以经理很高兴:)

 类似资料:
  • 有没有办法绕过的正常行为及其屏幕外页限制?我的包含四个,每个片断包含一个图像。我遇到的问题是,在实例化时,会创建两个,这导致从catch同时下载/提取大约20个图像(每个片断大约10个)。是否可以禁用屏幕外页限制? 我的目标是只在选择时下载图像,或者只在用户悬停图像时下载图像。实现这一点的一种方法是使用侦听器并设置一个标志,该标志告诉是否允许下载图像。 我能想到的第二种方法是在上设置一个,并且只在

  • 问题内容: 我有以下查询,该查询创建了一个视图表,该视图显示了商店中最高的销售员,其他信息很少: 上面的查询将仅显示单个商店的销售数据,其原因如上所述。我的桌子上有20家商店。如何更改上面的查询,以便为我提供20家商店的销售数据(即20行)。 问题答案: 根据上一个问题的答案,如果在同一家商店中以相同的总销售额捆绑多个员工,则将退回所有此类员工。

  • 我把一切都解决了,但有一个问题。我有4个不同的碎片。其中一个包含ListView。当我单击ListView中的一项时,更改全局变量。如果然后返回到其他片段,这些它们应该被改变。因为他们使用这个变量作为参数。但它们不会改变。 我的碎片 其他片段使用相同的加载

  • 我知道我能给出的的最低数字是1。但我需要一次加载一个页面,因为内存问题。 我将不得不使用旧样式的tabhost等吗?或者有什么方法可以让我的viewPager一次加载一个页面? 我的适配器使用ViewHolder模式扩展BaseAdapter rn。

  • 现在我生成了一组幻灯片,当我以pps形式打开它时,它不会在幻灯片之间转换,除非我在微软的powerpoint编辑器中打开它(我可以在其中添加转换)并保存它。然后它可以正常转换。 我认为这与幻灯片母版有关:https://poi.apache.org/apidocs/org/apache/poi/xslf/usermodel/XSLFSlideMaster.html但我不确定它是如何使用的,因为它说

  • 在ViewPager的CustomPagerAdapter中,在instantiateItem()方法中,我试图创建一个TextView,然后根据特定条件为每个页面设置不同的文本。从页面光标读取文本。下面是一个代码: 但是,ViewPager的行为与预期不符。第一页和第二页具有相同的文本,其余页具有预期的“锁定”符号。当我滑动到第4页并返回到第一页时,第一页由假设位于第二页的文本组成。我还尝试使用