반응형
이중 스크롤 구현 방법은 크게 2가지로
- 두개 이상의 스크롤 되는 뷰를 하나의 스크롤로 자연스럽게 보여지게 하는 방법과
- 스크롤 뷰 안에서 독립적으로 스크롤이 가능하도록 하는 방법이 있습니다.
첫번째 경우 ScrollView가 부모 뷰고 Recyclerview가 있는 구조가 대표적인 예로
NestedScrollView로 간단하게 처리할 수 있고 사용자가 보기엔 하나의 스크롤 되는 화면으로 인식됩니다.
( 해당 포스팅에선 다루지 않습니다. )
두번째 경우는 결제 페이지 같이 일반적으로 긴 화면에서 구매 약관등의 추가적인 긴 내용을 보여줄때
사용했었습니다.
뎁스로 나뉘어서 노출해도 되지만 법률 관련 권고 사항(추측)을 준수해야 할 경우, UX보단 정보 전달이 우선이기 때문입니다.
상위 뷰 터치 제한
하위 스크롤뷰를 터치 했을때 상위 스크롤뷰가 터치 이벤트를 뺏어가지 않도록 하는게 중요합니다.
binding.tvContent.setOnTouchListener { view, motionEvent ->
when(motionEvent.action){
MotionEvent.ACTION_UP -> {
binding.ctContent.parent.requestDisallowInterceptTouchEvent(false)
}
MotionEvent.ACTION_DOWN -> {
binding.ctContent.parent.requestDisallowInterceptTouchEvent(true)
}
}
true
}
위 코드상 'tvContent' 하위 리스트속 Scroll 되는 뷰고 'ctContent' 뷰가 상위 뷰로
하위 뷰를 터치 했을때 상위 뷰의 터치 이벤트를 막아 정상적으로 스크롤 되도록 합니다.
혹시 구현 하셨는데 잘 안되시면 댓글로 남겨주세요 !
반응형
'안드로이드 > 팁' 카테고리의 다른 글
[Android] PhotoPicker 로 이미지 업로드 (1) | 2024.10.01 |
---|---|
[Android] Kotlin DSL 적용기 (0) | 2024.01.31 |
[Android] 구글 로그인 연동 (2) | 2023.11.13 |
[Android] 폴더블 대응기 (0) | 2023.11.07 |
[Android] Flipper로 네트워크 디버깅 (1) | 2023.10.31 |