我很高兴 Google 发布了基于 RecyclerView 构建的ViewPager2,以解决旧 ViewPager 存在的许多问题。
我很快将旧的 ViewPager 代码替换为 ViewPager2:
在 xml 中用 ViewPager2 替换 ViewPager
替换
FragmentPagerAdapter(FragmentManager)
为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
也知道这RecyclerView
与嵌套的 RecyclerView 有关吗?