개발자

NestedScrollView 의 자식뷰로 RecyclerView 가 존재할 때 RecyclerView.Holder 의 TextView.text 값이 변경되면 자동으로 스크롤됨

2023년 06월 02일조회 132

제목 그대롭니다. 스택 오버플로에 나온 온갖 해결법을 다 써봐도 지멋대로 움직이는 스크롤이 막히질 않네요. 해결방법 있을까요?

이 질문이 도움이 되었나요?
'추천해요' 버튼을 누르면 좋은 질문이 더 많은 사람에게 노출될 수 있어요. '보충이 필요해요' 버튼을 누르면 질문자에게 질문 내용 보충을 요청하는 알림이 가요.

답변 1

커리어리 AI 봇님의 프로필 사진

'NestedScrollView' 내부에 'RecyclerView'를 두는 경우에 발생하는 스크롤 문제는 여러 가지 원인이 있을 수 있습니다. 다음은 이러한 문제를 해결하는 몇 가지 방법입니다: 1. 'NestedScrollView' 의 'fillViewport' 속성을 사용해 보세요. 'fillViewport' 속성은 'NestedScrollView'의 자식이 'NestedScrollView'를 완전히 채울 수 있도록 합니다. 이 속성을 'true'로 설정하면 'NestedScrollView'의 뷰 사이에 생기는 공간이 없어지기 때문에 스크롤이 지멋대로 움직이는 문제를 해결할 수 있습니다. #1 XML에서 'fillViewport' 속성을 설정하려면 다음과 같이 하세요: #2 Java나 Kotlin 코드에서 fillViewport 속성을 설정하려면 다음과 같이 하세요: 2. 'RecyclerView'의 'setNestedScrollingEnabled' 메소드를 사용해 보세요. 'setNestedScrollingEnabled' 메소드를 사용하면 'RecyclerView'의 중첩된 스크롤을 활성화하거나 비활성화할 수 있습니다. 이 메소드를 'false'로 설정하면 'RecyclerView'는 스크롤 이벤트를 'NestedScrollView'로 전달하지 않기 때문에 스크롤이 지멋대로 움직이는 문제를 해결할 수 있습니다. #3 Java나 Kotlin 코드에서 'setNestedScrollingEnabled' 메소드를 사용하려면 다음과 같이 하세요: 3. 'RecyclerView'뷰 홀더에서 데이터를 업데이트할 때 'notifyDataSetChanged' 메소드를 사용하지 마세요. 'notifyDataSetChanged' 메소드는 'RecyclerView'의 모든 항목이 업데이트되었음을 알리는 메소드입니다. 이 메소드가 호출되면 'RecyclerView'는 모든 뷰 홀더를 다시 바인딩하기 때문에 스크롤 위치가 변경될 수 있습니다. 대신, 특정 항목만 업데이트되었음을 알리는 'notifyItemChanged' 메소드를 사용해 보세요. 이 메소드는 스크롤 위치를 유지하면서 해당 항목만 업데이트합니다. #4 Java나 Kotlin 코드에서 'notifyItemChanged' 메소드를 사용하려면 다음과 같이 하세요: 이러한 방법들이 여전히 문제를 해결하지 못하면, 문제를 재현하는 코드나 더 많은 정보를 제공해 주시면 감사하겠습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
#1
<android.support.v4.widget.NestedScrollView
    ...
    android:fillViewport="true">

#2
nestedScrollView.setFillViewport(true);

#3
recyclerView.setNestedScrollingEnabled(false);

#4
adapter.notifyItemChanged(position);

커리어리 AI 봇의 답변을 평가해 주세요!

지금 가입하면 모든 질문의 답변을 볼 수 있어요!

현직자들의 명쾌한 답변을 얻을 수 있어요.

또는

이미 회원이신가요?

목록으로
키워드로 질문 모아보기

실무, 커리어 고민이 있다면

새로운 질문 올리기

지금 가입하면 모든 질문의 답변을 볼 수 있어요!