AppBarLayout에서 수직으로 스크롤
4374 단어 AndroidAppBarLayout
해본 일
View가 계층 구조로 바뀔 때 하위 뷰에 On Touch Listener를 설정하지 않으면 이벤트가 상위 뷰로 전파되므로 개체 뷰에서 On Touch Listener를 설정하고 r e q u s t D i sallow Intercept Touch Event에서 상위 뷰로 전파를 중지할 수 있습니다.
그러나 ViewPager의 경우 가로 스크롤을 멈출 수 없으므로 세로 스크롤을 판단할 수 있는 경우에만 전파를 멈출 수 있습니다.
val minDistance = 100
var downY: Float = 0F
var upY: Float = 0F
nestedScrollView.setOnTouchListener(View.OnTouchListener { v, event ->
when (event.action) {
MotionEvent.ACTION_DOWN -> {
downY = event.y
return@OnTouchListener true
}
MotionEvent.ACTION_UP -> {
upY = event.y
return@OnTouchListener true
}
}
val deltaY = downY - upY
if (Math.abs(deltaY) > minDistance) {
// 一定以上縦方向にスワイプした場合は親に対してタッチイベントを伝搬しない
// これによりAppBarLayoutのスクロールと競合せずにスクロールできるようになる
v.parent.requestDisallowInterceptTouchEvent(true)
}
return@OnTouchListener false
}
견본
misoca12/VerticalScrollInAppBarLayout
참고 자료
https://stackoverflow.com/questions/7449799/how-are-android-touch-events-delivered
https://qiita.com/takahirom/items/2978ede8e7d40b888832
http://blog.lciel.jp/blog/2013/12/03/android-touch-event
Reference
이 문제에 관하여(AppBarLayout에서 수직으로 스크롤), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/misoca12/items/6cf81e6a788713746d88텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)