問題
リストを更新するUIとしてSwipeRefreshLayoutを利用します
このリスト内のセルが一部横スクロールできる場合、この横スクロール中に少しでも指が縦にぶれたら、リフレッシュがでてきて横スクロールを妨害してしまいます
解決
SwipeRefreshLayout#setOnChildScrollUpCallbackを利用して、リフレッシュを制御することで実現できます
またListView#canScrollListが合わせて必要になるので注意してください
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
}