如果滚动位置为0,则ViewPager2中的片段不会响应单击

时间:2019-06-14 01:30:23

标签: android android-recyclerview android-viewpager android-touch-event android-viewpager2

我很高兴Google发布了ViewPager2,它基于RecyclerView解决了旧ViewPager遇到的许多问题。

我很快将旧的ViewPager代码替换为ViewPager2:

  1. 用xml中的ViewPager2替换ViewPager

  2. [{ photos: [ { imageData: 'id1' }, { imageData: 'id2' } ] }] 替换为FragmentPagerAdapter(FragmentManager)

  3. 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有什么关系吗?

1 个答案:

答案 0 :(得分:0)

事实证明,这可能是ConstraintLayoutViewPager2中的错误。

ViewPager2的容器最初是一个ConstraintLayout,在我将其更改为LinearLayout之后,它就可以正常工作。

我试图在一个示例项目中重现该问题,但是即使使用ConstraintLayout也无法重现。因此,必须有其他条件才能实现此目的。