HorizontalScrollView를 스크롤하는 동안 SwipeRefreshLayout의 새로 고침이 간섭하는 문제

문제



목록을 업데이트하는 UI로 SwipeRefreshLayout을 사용합니다.
이 목록의 셀이 일부 가로 스크롤 할 수 있다면이 가로 스크롤 중에 조금이라도 손가락이 세로로 흔들리면 새로 고침이 나오고 가로 스크롤을 방해합니다.



해결



SwipeRefreshLayout#setOnChildScrollUpCallback을 사용하여 새로 고침을 제어하여 얻을 수 있습니다.
또 ListView#canScrollList가 맞추어 필요하므로 주의해 주세요

GitHub 샘플
private var isDragging = false

swipeRefreshLayout.setOnChildScrollUpCallback { parent, child ->
    isDragging || listView.canScrollList(-1)
}

horizontalScrollView.setOnTouchListener { v, event ->
    when (event?.action) {
        MotionEvent.ACTION_DOWN, MotionEvent.ACTION_MOVE -> {
            isDragging = true
        }
        MotionEvent.ACTION_UP -> {
            isDragging = false
        }
    }
    false
}

좋은 웹페이지 즐겨찾기