ViewPager2가 슬라이드 이동을 하지 않는 문제는 NestedScrollView가 터치 이벤트를 가로채서 발생하는 문제일 수 있다.
ViewPager2에 터치 이벤트가 전달되어야 한다.
이 문제를 해결하기 위해서는 ViewPager2가 터치 이벤트를 받을 수 있도록 NestedScrollView를 터치 이벤트를 투과시키는 방법을 사용해야 한다.
이를 위해 NestedScrollView에 다음과 같은 속성을 추가할 수 있다.
android:fillViewport="true"
android:descendantFocusability="blocksDescendants"
- android:fillViewport="true": NestedScrollView가 자식 뷰를 포함하는 데 필요한 공간을 차지하도록 한다.
- android:descendantFocusability="blocksDescendants": 자식 뷰들이 포커스를 가지지 못하도록 한다.
이렇게 속성을 추가하면 NestedScrollView가 터치 이벤트를 ViewPager2로 전달하여 슬라이드 이동(스와이프 동작)이 가능하게 된다.
※참고※
더보기
안드로이드에서 포커스는 사용자 인터페이스 요소 중 하나가 현재 사용자와의 상호작용을 받을 수 있는 상태를 나타내는 것입니다. 예를 들어, 버튼, 입력 필드 (텍스트 상자), 체크 박스 등은 포커스를 가질 수 있으며 사용자가 터치하거나 키보드로 해당 요소와 상호작용할 때 포커스가 필요합니다.
android:descendantFocusability 속성을 blocksDescendants로 설정하면 해당 뷰그룹(여기서는 NestedScrollView) 내부의 모든 자식 뷰들이 포커스를 가질 수 없게 됩니다. 즉, 사용자는 이 뷰그룹 내부의 자식 뷰에 포커스를 주거나 포커스를 받을 수 없게 됩니다. 이것은 자식 뷰들이 사용자의 입력을 가로채지 않도록 하거나 특정 뷰그룹이 포커스를 완전히 관리하고자 할 때 유용합니다.
'android' 카테고리의 다른 글
RecyclerView 일정하게 여백 설정 (1) | 2023.10.06 |
---|---|
[android] 접근성(accessibility) (0) | 2023.09.11 |
[android] ConstraintLayout 화면 비율 유지하기 (0) | 2023.02.18 |
[android] this와 this@ (0) | 2023.02.16 |
[해결하기] TalkBack- focus 부분과 accessiblity 부분 처리 (0) | 2023.01.26 |