如何在另一个ViewPager2中使用ViewPager2

8

我在一个ViewPager2中使用了另一个ViewPager2。因此,滑动仅适用于根ViewPager。如何使两个ViewPager都能工作?

4个回答

15

根据文档所说:

"支持嵌套滚动元素

ViewPager2在滚动视图具有与包含它的ViewPager2对象相同的方向时,不会本地支持嵌套滚动视图。例如,在竖向定向的ViewPager2对象内部放置一个竖向滚动视图将不能正常工作。

为了支持在具有相同方向的ViewPager2对象内部放置滚动视图,您必须在预期滚动嵌套元素时,在ViewPager2对象上调用requestDisallowInterceptTouchEvent()。ViewPager2嵌套滚动示例演示了使用多功能自定义包装布局解决此问题的一种方式。

我已经亲自尝试过,并且它完全可以正常工作。您需要使用这个

这是文档的链接


0
创建自定义的帧布局在某些情况下可能很有用,但请记住,如果在子ViewPager2中有任何功能在点击子ViewPager2中的选项时触发,它将无法正常工作,因为它无法检测到您的点击功能。
例如: 如果您在子ViewPager2中有一个按钮,用于导航到其他活动,它将无法正常工作。因为帧布局可以访问触摸事件,并会拦截按钮的触摸事件,因此按钮可能无法点击。
我自己尝试过这个,并且遇到了这个问题。 仍在寻找在ViewPager2内部使用ViewPager2的最佳解决方案。 我尝试在父ViewPager中使用ViewPager而不是ViewPager2,这样可以正常工作,如果您只是想让它正常工作,那么可以使用ViewPager。 但是,仍然需要解决这个问题的解决方案。

根据目前的写法,你的回答不够清晰。请编辑以添加更多细节,以帮助他人理解这如何回答所提出的问题。你可以在帮助中心找到关于如何撰写好回答的更多信息。 - undefined

-1

我已经测试过这个类,但是nestedScrollHost类没有使用viewPager,而是使用了一个recycler。


这并没有回答问题。一旦您拥有足够的声望,您就可以评论任何帖子; 相反,提供不需要询问者澄清的答案。-【来自审核】 - RusArtM
这不是问题的答案,而是一条评论,因为 Stack Overflow 不允许我在没有声望的情况下回答,而且由于您对我的问题的评分,现在更加困难了。 - Miguel Perez

-2

对于子视图,mPager.setNestedScrollingEnabled(true)。


2
这个解决方案不起作用。这个解决方案很好用:https://github.com/android/views-widgets-samples/blob/master/ViewPager2/app/src/main/java/androidx/viewpager2/integration/testapp/NestedScrollableHost.kt - Piotr Badura

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接