我很高兴谷歌发布了ViewPager2 https://developer.android.com/jetpack/androidx/releases/viewpager2它基于 RecyclerView 构建,解决了旧 ViewPager 存在的许多问题。
我很快将旧的 ViewPager 代码替换为 ViewPager2:
将 xml 中的 ViewPager 替换为 ViewPager2
Replace FragmentPagerAdapter(FragmentManager)
with FragmentStateAdapter(Fragment)
-
ViewPager 设置如下:
viewPager.adapter = fragmentAdapter
val mediator = TabLayoutMediator(tabLayout, viewPager, true) { tab, position ->
tab.text = fragmentAdapter.tabNames[position]
}
mediator.attach()
没有进行其他更改。
问题
进行上述更改后,我意识到一个问题——
现在我的ViewPager是一个普通的水平分页器,我的每个片段fragmentAdapter
有一个垂直的RecyclerView
.
我观察到,当 RecyclerView 的滚动位置为 0 时,RecyclerView 中的项目无法接收任何单击或长单击事件,但可以滚动。一旦滚动,它就可以再次接收点击。*
知道ViewPager2
is a RecyclerView
另外,嵌套的 RecyclerView 有什么关系吗?
事实证明这可能是其中一个错误ConstraintLayout
or ViewPager2
.
的容器为ViewPager2
原本是一个ConstraintLayout
,然后我将其更改为LinearLayout
,它很简单。
我尝试在示例项目中重现该问题,但即使我使用也无法重现ConstraintLayout
......所以必须有一些其他条件才能实现这一点。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)