0

Так что проблема довольно проста: у меня есть ViewPager, который содержит 5 разных фрагментов, каждый из которых имеет RecyclerView. Я могу рисовать страницы, они отображаются с их собственными данными.RecyclerView внутри Фрагмент внутри ViewPager перехватывает другие страницы события

Дело в том, что я могу прокрутить сначала RecyclerView (страница 0). Когда я пытаюсь прокручивать страницу на другой странице, она не отображается на этой странице, а в первой. То же самое и для кликов.

Кто-нибудь уже столкнулся с этой проблемой? Я могу отправить код, если потребовал

Благодарности

+0

пожалуйста, напишите код, или мы не знаем, что происходит. – CrowsNet

ответ

0

спасибо для вашей заботы CrowsNet, я понял, что это было.

Это было вызвано моим ViewPager трансформатором, я использую библиотеку

compile 'com.ToxicBakery.viewpager.transforms:view-pager-transforms:[email protected]' 

Когда я использую библиотеку, кажется, что ViewPager обновляет взгляды и выбранные элементы, но все события прикосновения оставаться на первой странице. Затем я сделал собственный трансформатор ViewPager (обновленный от https://developer.android.com/training/animation/screen-slide.html), и он отлично работает. Поэтому я просто избавился от библиотеки, мне нужно только одно преобразование.

Код OnCreate в моей деятельности

@UiThread 
override fun onCreate(savedInstanceState: Bundle?) { 
    setContentView(R.layout.activity_home) 
    super.onCreate(savedInstanceState) 
    setSupportActionBar(toolbar) 

    // other declarations 
    [...] 

    // ViewPager and Tabs initialization 
    mHomePageAdapter = HomePagerAdapter(supportFragmentManager) 
    view_pager?.adapter = mHomePageAdapter 
    view_pager?.offscreenPageLimit = 4 
    view_pager?.setOnTouchListener(this) 

    // works, the one from Google, updated : https://code.google.com/p/android/issues/detail?id=58918 
    view_pager?.setPageTransformer(false, DepthPageTransformer(), ViewCompat.LAYER_TYPE_HARDWARE) 

    // doesn't work - from library 
    view_pager?.setPageTransformer(true, FlipHorizontalTransformer(), ViewCompat.LAYER_TYPE_HARDWARE) 

    // note that I've tried every combination of the function setPageTransformer (1, 2, 3 arguments) 

    tab_layout?.setupWithViewPager(view_pager) 
    val onTabSelectedListener = HomeTabSelectedListener() 
    tab_layout?.addOnTabSelectedListener(onTabSelectedListener) 
    onTabSelectedListener.onTabSelected(tab_layout?.getTabAt(0)!!) 

    if (savedInstanceState != null) { 
    selectedPage = savedInstanceState.getInt("selected_page") 
    } 
    view_pager?.currentItem = selectedPage 

    [...] 
} 
Смежные вопросы