🫥
GestureDetectorCompatでonScrollが発火しない
こんな感じのコードを書いたのだけど、発火しなくてハマった
val detector = GestureDetectorCompat(
requireActivity(),
object : GestureDetector.SimpleOnGestureListener() {
override fun onScroll(e1: MotionEvent, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean {
// 発火しない
return true
}
},
)
view.setOnTouchListener { _, event ->
return@setOnTouchListener detector.onTouchEvent(event)
}
chatgptさんの回答
だめだった...
試行錯誤した結果 onDownをoverrideして、trueを返さないとonScrollに到達しないみたい.
下記のようにして解決
val detector = GestureDetectorCompat(
requireActivity(),
object : GestureDetector.SimpleOnGestureListener() {
override fun onDown(e: MotionEvent): Boolean {
// onScrollを発火させるために必須
return true
}
override fun onScroll(e1: MotionEvent, e2: MotionEvent, distanceX: Float, distanceY: Float): Boolean {
// 発火する
return true
}
},
)
view.setOnTouchListener { _, event ->
return@setOnTouchListener detector.onTouchEvent(event)
}
この回答を書くことでいずれChatGPTさんにも学習されることを望む
Discussion