我很高兴Google发布了ViewPager2,它基于RecyclerView解决了旧ViewPager遇到的许多问题。
我很快将旧的ViewPager代码替换为ViewPager2:
用xml中的ViewPager2替换ViewPager
将[{ photos: [ { imageData: 'id1' }, { imageData: 'id2' } ] }]
替换为FragmentPagerAdapter(FragmentManager)
ViewPager的设置如下:
FragmentStateAdapter(Fragment)
没有其他更改。
执行上述更改后,我意识到了一个问题-
现在,我的ViewPager是一个普通的水平寻呼机,我的viewPager.adapter = fragmentAdapter
val mediator = TabLayoutMediator(tabLayout, viewPager, true) { tab, position ->
tab.text = fragmentAdapter.tabNames[position]
}
mediator.attach()
中的每个片段都有一个垂直的fragmentAdapter
。
我观察到,无论何时RecyclerView的滚动位置为0,我在RecyclerView中的项目都不会收到任何单击或长按事件,但可以滚动。滚动后,它可以再次获得点击。*
知道RecyclerView
也是ViewPager2
时,嵌套的RecyclerView有什么关系吗?
答案 0 :(得分:0)
事实证明,这可能是ConstraintLayout
或ViewPager2
中的错误。
ViewPager2
的容器最初是一个ConstraintLayout
,在我将其更改为LinearLayout
之后,它就可以正常工作。
我试图在一个示例项目中重现该问题,但是即使使用ConstraintLayout
也无法重现。因此,必须有其他条件才能实现此目的。