viewPager里包含横向的recycleView时,横向滑动recycleView会导致viewPager翻页,解决办法是
/**
* zivon
* 解决viewPager和recycleView的滑动冲突
*/
class NestedRecyclerView(context: Context, attrs: AttributeSet?) : RecyclerView(context, attrs) {
private val globalRect: Rect = Rect() // 临时数据
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
var x = ev?.rawX?.toInt()
var y = ev?.rawY?.toInt()
getGlobalVisibleRect(globalRect)
if (ev?.action == MotionEvent.ACTION_MOVE) {
if (globalRect.contains(x!!, y!!)) {
parent.requestDisallowInterceptTouchEvent(true)
}
}
return super.dispatchTouchEvent(ev)
}
}
这里还有一个问题就是,如果横向recycleView是被嵌套在纵向scrollView里的话,在recycleView区域上下滑动的时候,不会触发整个界面的纵向滑动。需要在上面代码中加滑动方向的判断,只需要在横向滑动的时候调用parent.requestDisallowInterceptTouchEvent(true)