0

所以這個問題很簡單,我有一個ViewPager,它包含5個不同的片段,每個片段都有一個RecyclerView。我可以滑動頁面,它們會顯示自己的數據。RecyclerView內部ViewPager中的片段攔截其他頁面事件

事情是我只能先滾動RecyclerView(page 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 

    [...] 
}