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

2024-04-23

我很高兴谷歌发布了ViewPager2 https://developer.android.com/jetpack/androidx/releases/viewpager2它基于 RecyclerView 构建,解决了旧 ViewPager 存在的许多问题。

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

  1. 将 xml 中的 ViewPager 替换为 ViewPager2

  2. Replace FragmentPagerAdapter(FragmentManager) with FragmentStateAdapter(Fragment)

  3. 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(使用前将#替换为@)

如果滚动位置为 0,ViewPager2 中的片段不会响应点击 的相关文章

随机推荐