如何拦截嵌套的RecyclerViews中的触摸事件以避免传播到父级?

时间:2016-09-07 10:47:51

标签: android android-viewpager android-recyclerview swipe ontouchevent

我有一个由ViewPager和3(水平)片段[PAGE]构成的复杂布局。

每个PAGE由几个(垂直)RecyclerView [CARD]组成。

每个CARD都有一个(水平)RecyclerView,包含多个项目。

我的问题是,当在项目之间滑动时,触摸事件会传播到viewPager,从而导致不需要的页面更改。

当触摸屏幕的特定区域(即最内层RecyclerView覆盖的所有区域)触摸事件的传播时,是否有一种方法可以阻止,即使没有元素被触摸也是如此(项目周围有自由空间) ,并触摸那里导致不需要的页面更改)

http://i.stack.imgur.com/8vfAI.jpg

这里有我的例子,当在可滚动区域上滑动时,我不希望能够移动到其他页面。

感谢您的帮助

Example of layout

1 个答案:

答案 0 :(得分:0)

如果您的CARD有自定义RecyclerView(用于水平回收商),您可以在触摸事件上致电requestDisallowInterceptTouchEvent()

这将使父级RecyclerView以及ViewPager停止接收输入,直到水平的Recycler停止接收触摸事件(如果我没记错的话,呼叫会自行清理)。