사용자가 앱을 사용하면서 화면의 스크롤을 내리다가 갱신하기 위해서 또는 다른 이유들로 스크롤의 포지션을 바꾸고 싶어 합니다. 일반적으로 많이 사용하는 예로는 자신이 보고 있는 프래그먼트가 선택 된 하단바를 다시 클릭 했을 때, 최상단으로 이동하는 기능을 많이 사용하고 이 예시를 통해 설명하고자 합니다.
MainActivity위에서 HomeFragment가 동작하고 BottomNavigation은 MainActivitiy, RecyclerView는 HomeFragment에 있다고 가정합니다.
* 메인 액티비티 *
binding.bottomNavigation.setOnItemSelectedListener {
when(it.itemId) {
R.id.tab1 -> {
if(binding.bottomNavigation.selectedItemId == R.id.tab1) {
homeFragment.binding.recyclerView.scrollToPosition(0)
}else {
(tab1 표시)
}
true
}
else -> false
}
}
1. 하단 바 클릭 시 이벤트가 발생하여야 함으로 구현 된 내용은 setOnItemSelectedListener 안에 있습니다.
2. R.id.tab1은 HomeFragment 입니다.
3. if else 를 통해 같은 탭을 눌렀는지 아닌지를 판별합니다.
4. 하단바.selectedItemId == R.id.tab1 을 통해 기존에 선택되어 있던 하단바가 HomeFragment인지 판단합니다.
5. HomeFragment이면 리사이클러뷰의 스크롤포지션을 0으로 바꿔줍니다.
핵심 코드
리사이클러뷰.scrollToPosition(포지션)
리사이클러뷰.smoothScrollToPosition(포지션)
// 첫 번째는 빠르게 이동하고 두 번째는 천천히 이동합니다.
'기타 > Android' 카테고리의 다른 글
[Kotlin] Sealed class 란? (0) | 2023.02.25 |
---|---|
[Kotlin] Scope functions(let, run, with, apply, also) 정리 (0) | 2023.02.22 |
[Android] Toolbar 뒤로가기 버튼 만들기 (0) | 2022.08.12 |
[Android] BottomNavigationView(하단 바) 설정하기 (0) | 2022.08.10 |
[Android] Toolbar(상단 바) 설정하기 (0) | 2022.08.08 |