본문 바로가기

안드로이드/앱 개발

NestedScrollView 스크롤 위치가 이상할 때

 

바텀 슬라이딩 안에 RecyclerView 가 여러 개 들어가는 NestedScrollView 를 만들었다. 그런데 특정 단말기에서 스크롤의 포커스가 이상하게 두번째 리사이클러뷰에 맞춰지는 것을 발견. Note 10+ 에선 발생하지 않았던 문제였는데, s7으로 테스트하니 발견할 수 있었다. 이건 간단하게 해결할 수 있다. 하위 뷰들이 포커스를 받지 못하도록 하는 속성을 넣어주면 된다. NestedScrollView 를 사용할 때 포커스 문제를 종종 발견하는데, 이 속성을 추가하면 해결이 바로 가능하다.

 <androidx.core.widget.NestedScrollView
            android:id="@+id/scrollview"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_marginTop="28dp"
            android:layout_marginBottom="80dp"
            app:layout_constraintBottom_toBottomOf="parent">

	// recyclerView 를 감싸고 있는 ConstraintLayout
            <androidx.constraintlayout.widget.ConstraintLayout
                android:id="@+id/layout_scroll"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                
                // 이 속성 하나만 추가하면 된다.
                android:descendantFocusability="blocksDescendants">
                
                // recylerView 들 여러개

 

참고.

https://developer.android.com/reference/android/view/ViewGroup#attr_android:descendantFocusability