在 BottomSheetDialog 内的 Viewpager 内嵌套滚动

2024-03-26

简洁版本:

我该如何设置NestedScrollingChild of a NestedScrollingParent有多个这样的孩子。

长版

我实现了一个BottomSheetDialogFragment其布局由ViewPager,这个viewpager的适配器包含一个RecyclerView.

现在的问题是,既然NestedScrollingParent此时底部表的协调器布局仅支持一个direct NestedScrollingChild,只有适配器的第一个片段可以嵌套滚动。

我的意思是,每当setAdapter在viewpager上调用,第一项支持嵌套滚动。但是当我更改页面后,新页面现在不会滚动。然后当我返回上一页时,它仍然支持滚动。

另外,我注意到,如果可以滚动的片段或页面被破坏,则后续页面现在可以滚动,这意味着后一页成为底部工作表的滚动子项。问题是现在获得滚动能力的页面不是当前项目,而是前一个项目(我的适配器必须维护3个片段).

Summary:

After setAdapter

  • 片段0可以滚动
  • 然后将页面更改为片段1后,片段1无法滚动
  • 但切换到片段 2,然后返回片段 1 允许片段 1 滚动(因为我猜片段 0 已被破坏)

在深入研究源代码后,我发现问题在于用于查找的错误算法NestedScrollingChild底页的(谷歌的人没有考虑到ViewPager位于底页内)。

请参阅此处的方法:找到ScrollingChild() https://github.com/android/platform_frameworks_support/blob/master/design/src/android/support/design/widget/BottomSheetBehavior.java#LC600

这个方法的作用是返回第一个NestedScrollingChild它在给定视图(本例中为底页)上遇到,在具有 3 页的视图分页器的情况下,即当前页面之前的一页。此外,该方法在子级的布局阶段被触发。CoordinatorLayout底片的包装纸。

考虑到这一点,我们可以设计出许多解决方案,包括对行为本身进行子类化。

此外,还可以限制NestedScrollingChild在 viewpager 中添加和删除此类子项的一个实例(从旧页面中删除,然后添加到当前页面中),这就是我所做的。你可以在里面做这个setPrimaryItem适配器或在OnPageChangeListener。请务必致电requestLayout在底部表的协调器布局上。 (此解决方案取决于寻呼机适配器的布局/结构类型,因此我不会发布我的确切解决方案)。

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

在 BottomSheetDialog 内的 Viewpager 内嵌套滚动 的相关文章

  • Access / Word 2010 VBA 邮件合并尝试打开 [文件夹名称].mdb 而不是 ACCDB 源

    我们正在尝试从 Access 中自动执行邮件合并过程 单击按钮后 VBA 将运行指定当前数据库 accdb 作为数据源并运行 SQL 具体代码如下 Set up Word Dim objWord As Object Set objWord
  • 用于 C# XNA 的 Javascript(或类似)游戏脚本

    最近我准备用 XNA C 开发另一个游戏 上次我在 XNA C 中开发游戏时 遇到了必须向游戏中添加地图和可自定义数据的问题 每次我想添加新内容或更改游戏角色的某些值或其他内容时 我都必须重建整个游戏或其他内容 这可能需要相当长的时间 有没
  • 在 GWT 中,在任何主机页标记上添加事件处理程序

    我想为任何标签添加 MouseOver 事件处理程序 举个例子 我想为旧版 HTML 页面中的每个锚点页面添加事件处理程序 继GWT指南 http code google com webtoolkit doc 1 6 DevGuideUse
  • 没有 OAuth 的 Spring Security JWT

    最近我开始学习如何使用oauth 2 0 jwt配置spring boot 我有一个问题 是否可以使用spring boot security jwt避免oauth 2 0 是的 可以使用JWT无需使用标准化的功能OAuth 2 0 flo
  • 如何为 Windows toast 注册协议?

    如何注册 Windows toast 协议 样本中来自https blogs msdn microsoft com tiles and toasts 2015 07 02 adaptive and interactive toast not
  • ngmodel与Angular2中复选框的动态数组绑定

    我有一个 Angular 2 组件 其中我从数组生成复选框列表 现在我需要根据选中的复选框填充不同的数组 这应该是双向绑定 这意味着如果复选框的值已在数组中 则必须已经检查了复选框 我在 Angular 1 中使用了一个名为 checkli
  • 使用 crypt() 加密

    我目前正在做一个非常安全的登录系统 但我是 crypt 函数的新手 需要一些快速帮助 我在注册过程中使用 crypt 加密密码字符串并将其保存到数据库中 但是 我如何在登录过程中解密密钥 或者我应该怎么做 或者是否可以对提交的密码字符串进行
  • 您可以使用关键字参数而不提供默认值吗?

    我习惯于在 Python 中使用这样的函数 方法定义 def my function arg1 None arg2 default do stuff here 如果我不供应arg1 or arg2 那么默认值None or default
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d
  • Googletest:如何异步运行测试?

    考虑到一个包含数千个测试的大型项目 其中一些测试需要几分钟才能完成 如果按顺序执行 整套测试需要一个多小时才能完成 通过并行执行测试可以减少测试时间 据我所知 没有办法直接从 googletest mock 做到这一点 就像 async选项
  • Typescript 函数接口重载

    我有以下代码 interface MySecondInterface a type A interface MyInterface val1 string val2 string MySecondInterface a
  • 带显示块的SPAN

    和默认有什么区别 div 元素和默认值 span 元素与display block HTML 元素的有效性和语义存在差异 否则它们是相同的 div and span两者都被定义为通用容器 在 HTML 方面没有更深层次的含义 一个默认为块显
  • 使用 Crypto++ 获取 ECDSA 签名

    我必须使用 Crypto 在变量中获取 ECDSA 签名 我在启动 SignMessage 后尝试获取它 但签名为空 我怎样才能得到它 你看过 Crypto wiki 吗 上面有很多东西椭圆曲线数字签名算法 http www cryptop
  • 是否可以在 C# 中强制接口实现为虚拟?

    我今天遇到了一个问题 试图重写尚未声明为虚拟的接口方法的实现 在这种情况下 我无法更改接口或基本实现 而必须尝试其他方法 但我想知道是否有一种方法可以强制类使用虚拟方法实现接口 Example interface IBuilder
  • 匿名结构体作为返回类型

    下面的代码编译得很好VC 19 00 23506 http rextester com GMUP11493 标志 Wall WX Za 与VC 19 10 25109 0 标志 Wall WX Za permissive 这可以在以下位置检
  • 使用泛型全面实现特征

    我正在通过实现矩阵数学来练习 Rust 但遇到了一些障碍 我定义了我认为与矩阵相关的特征 trait Matrix
  • Android:如何检测手机设置中的语言已更改

    我如何检测我的手机语言是否已更改 例如 Facebook 应用程序将向我们宣布 please wait we preparing your language i used myString Locale getDefault getDisp
  • 错误:无效使用不完整类型“类 Move”/未定义对 Move::NONE 的引用

    拜托 我不知道为什么这个简单的代码被拒绝 它给了我 2 个编译错误 请帮帮我 I use 代码 块 20 03 我的编译器是GNU GCC 移动 hpp class Move public Move Move int int public
  • android ndk 硬件调试内存

    背景 我对 C 很有经验 对 Android 和 Java 还很陌生 但这是编程的环境问题 我已经用 ANSI C 开发了一个管理应用程序 可以移植到任何操作系统 只需在依赖于操作系统的代码中添加 UI 即可 它使用相当多的内存 特别是对于
  • CUDA 中指令重放的其他原因

    这是我从 nvprof CUDA 5 5 获得的输出 Invocations Metric Name Metric Description Min Max Avg Device Tesla K40c 0 Kernel MyKernel do

随机推荐

  • 如何使用GDB调试一个大项目?

    现在我有一个c语言项目 其中包括三个目录 bin inc and src 所有头文件 h 包含在 inc和所有源 c 文件存储在 src 即a c b c c c 最终生成的可执行文件位于 bin makefile编译后 会生成所有的obj
  • 如何更改 Mac OS X 系统菜单上的 Qt 应用程序名称?

    我的 Qt 应用程序在 Mac OS X 菜单上显示为一个相当不友好的名称 名字看起来像我的时髦应用程序 我该如何将其更改为更讨人喜欢的内容 拥有一个 Info plist 并将 CFBundleName 设置为您喜欢的名称
  • 单击在 Listitem Listview android 上不起作用

    我实现了安卓listview与ListActivity 这里我遇到的问题是 当我单击列表项时 当闪烁颜色也没有出现 即橙色 时 不会执行任何操作 那么您对我的问题的友好回答有什么想法吗 Override protected void onL
  • Bootstrap Modal 与 Chart.js 折线图

    我有一个推特Bootstrap 3 模态 http getbootstrap com javascript modals窗口 我想画一个Chart js https github com nnnick Chart js里面的折线图 但每次我
  • Android Renderscript 高级 rsForEach 调用的文档

    我有一个关于带有 rs script call t 参数的 Android Renderscript rsForEach 函数如何工作的问题 在示例中 仅使用另一个 简单的 rsForEach 函数 因此这对我没有帮助 我想更改数组的 xS
  • Flask - 对 POST 的响应 - 令人困惑的行为

    我对 Flask 中的以下行为感到完全困惑 我确信发生了一些基本的事情 但我不知道这是脚本还是服务器问题 所以我发布了我能想到的最短的示例 该页面有两种方式将数据发布到服务器 一种是通过提交
  • Xcode打印字典的键和值

    Xcode 7 中的打印描述给出了类似于下面的内存地址 尝试了所有选项 但得到这样的输出 3 elements 0 2 elements 0 Output 1 3 elements 0 2 elements 0 type 1 Output2
  • c++ less 运算符重载,使用哪种方式?

    例如 在 C 头文件中 如果我定义了struct Record我想用它进行可能的排序 以便我想重载less operator 以下是我在各种代码中注意到的三种方法 我粗略地注意到 如果我要放Record into a std set map
  • Android maxLines 和 minLines 属性在 XML 中不起作用

    我有一个 XML 文件 其中包含EditText具有这些属性
  • 验证设计模式

    我正在为我们的一个部门编写一个数据验证实用程序 它有以下要求 动态添加新的业务实体 动态地向实体添加新的验证 用于显示业务实体列表及其验证的 UI 用户可以选择开始对所有或选定的业务实体进行验证 如果任何验证失败 UI 将显示验证错误消息
  • 如果应用了 java 插件,Gradle 无法在复合构建中找到 zip 工件

    我有一个 Gradle 项目 它创建一个 zip 工件 我通过定义工件artifacts add default zipTask 我通过以下方式将此项目添加到另一个项目includeBuild并使用 zip 作为依赖项 dependenci
  • 阻止用户将BMP、TIFF等图像上传到Plone中的ImageField

    用户这样做是因为他们可以 但是 图像自动调整大小等功能会出现故障 这让我成为一个悲伤的男孩 如何限制全站图像上传为 GIF PNG 和 JPEG 对于原型 为了灵巧 使用原型 您可以覆盖图像内容类或使用以下架构创建您自己的自定义图像内容类
  • emacs 智能感知

    我知道这个问题已经讨论过很多次了 但是 emacs 中的 c c intellisense 有什么好的方法吗 我一直无法正确设置 cedet 现在我正在开发一个具有庞大代码库的维护项目 如果没有适当的智能感知 管理起来非常困难 目前我正在使
  • 在每个向量条目处求和到向量末尾

    I have X lt c 1 2 3 4 5 6 我想要 X 之和的输出为 Y lt c 21 20 18 15 11 6 我继续读下去rollapply但它一次只能求和 3 个连续的数字 所以有人可以帮助我吗 你需要cumsum Try
  • 将 Console.WriteLine() 输出重定向到字符串

    我需要采取Console WriteLine 输出 并附加到字符串 我无法更改 Main 方法以简单地附加到字符串而不是写入控制台 我需要一种方法来从控制台读取所有写入的行并将它们附加到字符串 目前 我一直在使用FileStream并将控制
  • Android,有没有参考资料可以查看Android默认图标和图像是什么?

    当我想要设计 UI 时 我需要知道什么是预定义图标 我搜索了网络包括http developer android com design index html http developer android com design index h
  • 调整 coord_pol() 直方图中文本标签的位置

    我陷入了一个小标签问题 即用 ggplot2 制作的一系列极坐标直方图 圆环 这些东西怎么称呼 以下是数据和图表外观的简化示例 df lt data frame Attribute1 10 Attribute2 1 Attribute3 2
  • 如何修复 pip install 产生的 gcc 错误?

    我尝试使用以下命令从 PyPI 安装 python 包 sudo pip3 install switcheo 安装失败并显示以下错误消息 gcc Wno unused result Wsign compare Wunreachable co
  • 如何在 JavaScript 中获取查询字符串值?

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 有没有一种无插件的检索方式请求参数 http en wikipedia org wiki
  • 在 BottomSheetDialog 内的 Viewpager 内嵌套滚动

    简洁版本 我该如何设置NestedScrollingChild of a NestedScrollingParent有多个这样的孩子 长版 我实现了一个BottomSheetDialogFragment其布局由ViewPager 这个vie