古い ViewPager が抱えていた多くの問題を解決するために、Google が RecyclerView に基づいて構築されたViewPager2をリリースしたことを非常に嬉しく思います。
古い ViewPager コードを ViewPager2 にすばやく置き換えました。
xml で ViewPager を ViewPager2 に置き換えます
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 と何か関係がありますか?