[Android] 안드로이드 RecyclerView나 ListView 스크롤뷰 내부 특정뷰로 포커스 되는 현상 해결하기

개발중인 모바일앱을 마무리하던 중에 RecyclerView가 특정 상황에서 상단뷰를 보여줘야하는데

특정뷰로 스크롤뷰가 포커싱되는 현상이 일어났다.

처음에 어떤식으로 구글링해서 해결해야 할지도 몰라고 이것저것 시도해도 안돼서 포기하려던 중

해결방법을 드디어 알아냈다.



포커싱을 막기위해서는 xml 파일의 RecyclerView나 ListView를 감싸고 있는 레이아웃에 한줄만 추가하면 된다.

android:descendantFocusability="blocksDescendants"

적용


본인같은 경우는 RecyclerView를 감싸는 레이아웃이 LinearLayout이었기 때문에 해당뷰에 코드를 입력해주었다.

<LinearLayout
                android:id="@+id/horizontalview"
                app:layout_constraintTop_toBottomOf="@id/todaycook"
                android:layout_width="match_parent"
                android:layout_height="150dp"
                android:layout_margin="10dp"
                android:descendantFocusability="blocksDescendants"
                android:orientation="vertical">
                <android.support.v7.widget.RecyclerView
                    android:id="@+id/list_video"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:scrollbars="horizontal"
                    app:layoutManager="android.support.v7.widget.LinearLayoutManager"/>
    </LinearLayout>

저 코드를 입력해주니 포커싱이 정상적으로 Block돼서 상단 스크롤로 이동하였다.

Categories:

Updated: