解決viewPager和recycleView的滑動衝突

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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章