【问题标题】:Conflict between recyclerview scroll and viewpager swiperecyclerview滚动和viewpager滑动之间的冲突
【发布时间】:2018-06-16 18:46:07
【问题描述】:

在我的应用程序中,我有一个包含四个片段的 ViewPager。所有的片段都由可以垂直滚动的 RecyclerView 组成。我的问题是,当我尝试导航到其他片段并向左或向右滑动时,首先(大部分)检测到 RecyclerView 的滚动,而不是滚动到其他片段,而是滚动 RecyclerView。

为了更清楚,如果我滚动 recyclerView,然后突然向左或向右滑动,viewpager 永远不会滑动。

我该怎么办?

【问题讨论】:

  • 这应该可以像在 google play 商店中一样正常工作。如果您的应用程序的行为与 Play 商店应用程序不同,则应通过查看您的代码来加以注意。检查并告诉我们。
  • 你的意思是上传到playstore后就可以正常使用了吗?
  • 没有。绝不。我以 Google Play 商店为例进行比较。你能更新你使用的布局结构吗?

标签: android android-fragments android-recyclerview android-viewpager


【解决方案1】:

当您垂直滚动RecyclerView 并越过触发滚动的阈值时,它会消耗TouchEvent。这意味着默认行为是在您从屏幕上松开手指之前,ViewPager 将无法触发水平滚动。这是滚动视图如何相互交互的默认行为。您可以尝试通过扩展RecyclerViewViewPager 或使用将所有TouchEvents 分派到两个视图的协调视图来覆盖触摸处理。但是,这两种方法中的任何一种都可能带来许多问题。

如果您要查看 Play 商店作为参考,它的触摸处理与您在此处看到的相同。

【讨论】:

  • 即使在 recyclerview 上进行了一次垂直滚动(仍在滚动),当我松开手指并尝试向左或向右滑动时,recyclerview 仍然会拦截触摸。
  • 您必须添加一些您在触摸时自定义的任何内容的示例代码。我已经完成了许多ViewPagers(水平)的实现,其中包含一个集合RecyclerView(垂直),没有任何问题。
猜你喜欢
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多