본문 바로가기

안드로이드/팁

[Android] ScrollView in Recyclerview ( 이중 스크롤 구현 )

반응형

이중 스크롤 구현 방법은 크게 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] Kotlin DSL 적용기  (0) 2024.01.31
[Android] 구글 로그인 연동  (0) 2023.11.13
[Android] 폴더블 대응기  (0) 2023.11.07
[Android] Flipper로 네트워크 디버깅  (1) 2023.10.31
[Android] OS 13 알림 권한 대응  (0) 2023.06.27