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)