Фрагменты в ViewPager2 не реагируют на щелчки, если позиция прокрутки равна 0 - PullRequest
0 голосов
/ 14 июня 2019

Я очень рад, что Google выпустил ViewPager2 , который построен на RecyclerView для решения многих проблем, которые есть у старого ViewPager.

Я быстро заменил свои старые коды ViewPager на ViewPager2:

  1. Заменить ViewPager на ViewPager2 в формате xml

  2. Заменить FragmentPagerAdapter(FragmentManager) на 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 также является RecyclerView, есть ли какое-то отношение к вложенному RecyclerView?

1 Ответ

0 голосов
/ 14 июня 2019

Оказывается, это вероятно ошибка в ConstraintLayout или ViewPager2.

Контейнер ViewPager2 изначально был ConstraintLayout, и после того, как я изменил его на LinearLayout, он просто заработал.

Я пытался воспроизвести проблему в примере проекта, но не могу воспроизвести, даже если использовал ConstraintLayout ... Так что должны быть некоторые другие условия, чтобы это произошло.

...