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 

    [...] 
}