垂直 ViewPager2 与 RecyclerView 滚动问题

2024-03-11

我使用的是 ViewPager2,它有两个垂直方向的片段。当用户向下滑动到第二个片段时,有一个 RecyclerView 以相同的垂直方向滚动内容。

问题是当我滚动 RecyclerView 的内容时,有时 ViewPager2 捕获滚动事件,有时 RecyclerView 捕获滚动事件。

我想这样,当用户滚动到 RecyclerView 的顶部时,只有当用户到达 RecyclerView 中内容的顶部时,ViewPager 才会向上滑动回到第一个片段。

我尝试过使用 recyclerView.isNestedScrollingEnabled = false没有太多运气。我还尝试将 RecyclerView 放入 NestedScrollView 中,但不建议这样做,因为 RecyclerView 然后会创建数据集所需的每个 ViewHolder,这显然效率不高。


所以...我只需阅读一些内容就可以弄清楚文档 https://developer.android.com/training/animation/vp2-migration#nested-scrollables????。我将在这里发布答案,以便它可以帮助其他遇到类似问题的人:

由于 ViewPager2 不能很好地支持嵌套滚动视图,与 NestedScrollView 不同,我们需要在布局中使用自定义包装器来包装嵌套滚动视图,以便能够处理被嵌套滚动视图父级拦截的触摸和滑动事件。在我们的例子中,子级将是 RecyclerView,父级将是 ViewPager2。

你可以找到包装类here https://github.com/android/views-widgets-samples/blob/master/ViewPager2/app/src/main/java/androidx/viewpager2/integration/testapp/NestedScrollableHost.kt。只需将其添加到您的项目中,然后将可滚动视图包装在其中,如下所示:

    <NestedScrollableHost
            android:layout_width="match_parent"
            android:layout_height="match_parent">

        <androidx.recyclerview.widget.RecyclerView
                android:id="@+id/my_recycler_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" />

    </NestedScrollableHost>

这里有几点需要注意:文档 https://developer.android.com/training/animation/vp2-migration#nested-scrollables表示此解决方案不适用于 ViewPager 内其他可滚动视图内的可滚动视图。此解决方案仅适用于 ViewPager 的即时滚动视图。

另一个注意事项是包装类使用requestDisallowInterceptTouchEvent()确保子可滚动视图告诉父级在子级可滚动视图不滚动的情况下不要滚动需要滚动。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

垂直 ViewPager2 与 RecyclerView 滚动问题 的相关文章

随机推荐

  • 如何从列表列表中删除 nan? [复制]

    这个问题在这里已经有答案了 我试图从列表列表中删除所有 nan 我的数据如下 1 2 3 nan nan nan 4 5 nan 9 8 7 6 5 4 3 nan nan nan nan nan 我尝试从这里的答案中做到这一点 如何从列表
  • 将最后一个有效索引掩码应用于数据帧以获取最后一个有效值

    我有一个如下所示的数据框 s1 s2 s3 s4 0 v1 v2 v3 v4 0 v5 v6 v7 np nan 0 v8 np nan v9 np nan 0 v10 np nan np nan np nan 本质上从上到下有数值 并且跨
  • 视图在呈现后被 UITransitionView 阻止[重复]

    这个问题在这里已经有答案了 我有一个侧面导航控制器并通过 UIButton 呈现它 当我直接将此 NC 设为根视图控制器时 self presentviewcontroller NC animated YES completion nil
  • 值中每第 n 个字符添加逗号

    我的问题很简单 我从 sql select 中获取一个值 如下所示 ARAMAUBEBABRBGCNDKDEEEFOFIFRGEGRIEISITJPYUCAKZKG 我需要这样的 AR AM AU BE BA BR BG CN DK DE
  • 带有 PIL 的 Pyinstaller。导入错误:无法导入名称 _imaging

    我在运行包含枕头的已编译可执行文件时遇到问题 我使用了 pyinstaller 它似乎编译得很好 但是运行 exe 后 会抛出错误 似乎与引用 imaging 而不是 Image 存在冲突 首先 我觉得很奇怪pillow如何安装到PIL目录
  • 使用 PHP/JavaScript 链接获取有关网站访问者的信息

    有人试图对我进行网络钓鱼 他们假装是我的亲密朋友之一来羞辱我们俩 此人创建了一个虚假的电子邮件帐户 冒充此人 并试图从我这里获取个人信息 我和我的朋友确认这不是他 现在我们正在努力找出他是谁 我想向他们发送一个指向某种 PHP 或 JS 页
  • 如何将 OpenAPI 2.0 转换为 OpenAPI 3.0? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有任何工具 库可以将 OpenAPI 2 0 定义转换为 OpenAPI 3 0 而无需每行一个
  • RDF 读取/解析错误

    我有一些 RDF 文件 我想将其导入到 tripplestore AllegroGraph 中 但在第一个文件中 我收到 SAX 解析器错误 指出存在无法识别的字符 删除有问题的行后 一切都很好 然后我尝试使用 W3C RDF 验证器和带有
  • ES6代理类,访问私有属性(无法从类未声明的对象中读取私有成员#hidden)

    我正在研究代理对象 类和私有属性 并遇到了这个错误消息 home marc projects playground pipeline clsss js 14 this hidden this hidden TypeError Cannot
  • jQuery - 动态创建的选项卡元素不会触发事件

    我在用jQuery UI 选项卡 http docs jquery com UI Tabs div ul li a href fragment 1 span One span a li ul div 我有一个添加新选项卡的按钮 我使用以下代
  • 承诺进展情况

    Theory 我在开始时做出了大约 100 个承诺 然后使用Promise all 这 100 个 Promise 中的每一个都会依次进行一些异步 REST 调用 其响应可能主要有所不同 例如由于网络连接 解决所有 100 个承诺的过程大约
  • 用鼻子重复进行单次或多次测试

    如同这个问题 https stackoverflow com questions 4088354 is it possible to use nose to run one test multiple times concurrently
  • 在 Go 中,我可以返回满足接口的结构而不访问该接口吗?

    我认为解释这一点的最好方法是通过例子 所以这里是 package main import fmt Greeter greets with a Greeting type Greeter interface Greet Greeting A
  • 如何防止弹性框随内容增长

    在下面的代码和 jsfiddle 中 flexbox 比例随内容而变化 我感觉我不明白 flexbox 的真正目的 如果我们给予flex grow我们想要的比例的属性 为什么盒子会随着内容而增长 通知何时dataDiv其中有新的跨度内容 比
  • Django - 默认字段值取决于其他字段值

    我在设置默认字段值时遇到问题 我想做的事 我希望 Packages 类中的价格成为 Bill 类中 PriceNoTax 的默认值 正如你所看到的 所有三个类都是 逻辑上有联系的 示例 账户 1 有一个 id 为 1 的包裹 该包裹的价格为
  • 高斯模糊和 FFT

    我正在尝试为学校项目实施高斯模糊 我需要同时实现 CPU 和 GPU 来比较性能 我不太确定我是否理解高斯模糊的工作原理 所以我的问题之一是 如果我理解正确的话 这就是我现在所做的 我使用维基百科中的方程http en wikipedia
  • 实体框架引用不会自动加载

    在 ADO Net 实体框架中 我有一个对象 它有 4 个对其他对象的引用 由于某种原因 当我查询这些引用时 其中两个会自动加载 如预期 并且其中两个始终返回 null 奇怪的是 当我manually要求加载参考文献 他们加载得很好 举个例
  • 使用动词时工作目录不起作用

    Using Start Process when Verb被使用时 Workingdirectory选项不起作用 新的 powershell 始终启动于C WINDOWS system32 为什么是这样 我怎样才能做到这一点而不需要额外的c
  • 如何使用 powershell 循环创建 XML 文件的元素?

    我要创建 xml 文件 我从 ini 文件中选取的 xml 元素 我的 ini 文件超过 1 个 我尝试了这个 但仍然只能创建 1 个元素 我的 ini 文件中有 2 种类型的内容文件 第一 Product Name NB A String
  • 垂直 ViewPager2 与 RecyclerView 滚动问题

    我使用的是 ViewPager2 它有两个垂直方向的片段 当用户向下滑动到第二个片段时 有一个 RecyclerView 以相同的垂直方向滚动内容 问题是当我滚动 RecyclerView 的内容时 有时 ViewPager2 捕获滚动事件