반응형
RecyclerView를 사용하면서 어떤 사용자 action 등에 의해 특정 아이템 위치로 스크롤할 필요가 있습니다.
이때 손 쉽게 사용할 수 있는 방법이 있는데, 아래와 같이 기본적으로 제공되는 scrollToPosition 함수를 사용하는 것입니다.
// #1.
RecyclerView.scrollToPosition(position: Int)
// #2
RecyclerView.smoothScrollToPosition(position: Int)
이걸로 상황이 말끔히 해결된다면 그걸로 끝입니다. 하지만 때로는 위 함수로 부족한 경우가 있습니다.
예를 들어, 위 2개 함수를 통해 스크롤을 하게 되면 해당 아이템이 보이는 위치까지만 스크롤합니다. 다시 말해 내가 찾고자 하는 아이템을 최상단에 보여주도록 스크롤을 해주지 않는다는 의미입니다. 내가 찾고자 하는 아이템의 position이 10 위치에 있다면, 딱 그 아이템이 현재 화면의 가장 하단에 위치하게끔만 스크롤됩니다.
내가 이동하고자 하는 아이템을 최상단으로 위치시키면서 스크롤하기 위해서는 아래와 같이 사용해야 합니다.
val smoothScroller: SmoothScroller by lazy {
object : LinearSmoothScroller(context) {
override fun getVerticalSnapPreference() = SNAP_TO_START
}
}
smoothScroller.targetPosition = position
recyclerView.layoutManager?.startSmoothScroll(smoothScroller)
반응형
'개발 > Android' 카테고리의 다른 글
Android EditText, TextView 코틀린 변환 시 JvmOverloads 쓰지 마세요 (0) | 2020.12.16 |
---|---|
Android 코드로 Dark 모드 on/off (0) | 2020.12.16 |
Bitbucket Pipeline으로 Android APK 빌드하기 (0) | 2020.11.08 |
[Android Dev Summit ’19] What’s New in Room – 정리 (0) | 2020.11.08 |
[Android] Architecture 정리 – AAC ViewModel, LiveData, Coroutine (0) | 2020.11.08 |