반응형
ScrollView하위 뷰중 특정 뷰로 스크롤 되도록 하는 기능을 구현했습니다.
먼저 제가 작업한 뷰의 구조는 아래 사진과 같습니다.
타이틀과 백버튼이 있는 Top 영역과 그 아래 컨텐츠를 담고 있는 ScrollView 로 이루어진 간단한 엑티비티 입니다.
방식은 간단하게 특정 뷰가 화면내 어떤 위치에 위치하고 있는지 좌표를 구하고 그 좌표 만큼 스크롤 합니다.
view.getLocationOnScreen(outLocation: IntArray)
특정뷰 상단이 스크롤뷰 상단에 걸리도록
private fun scrollToView(view: View){
var statusBarHeight = CommonViewUtil.getStatusBarHeight(context = this)
val viewLocation = IntArray(2)
val scrollLocation = IntArray(2)
view.getLocationOnScreen(viewLocation)
binding.nsContent.getLocationOnScreen(scrollLocation)
val scrollY = (binding.nsContent.scrollY + viewLocation[1]) - scrollLocation[1]
binding.nsContent.smoothScrollBy(0, scrollY)
}
'smoothScrollBy' 메소드를 'smoothScrollTo'로 헷갈리지 않도록 주의해주세요
- smoothScrollBy(x,y) : 현재 위치에서 상대적인 위치로 x,y만큼 이동
- smoothScrollTo(x,y) : x,y의 위치로 스크롤
이상 포스팅 마칩니다!
궁금하신 사항은 댓글 남겨주세요! 최대한 빨리 확인하고 답변 달겠습니다.
반응형
'안드로이드 > 코틀린' 카테고리의 다른 글
[Compose] UI 정리 - xml 호환 ? (0) | 2024.08.05 |
---|---|
[Android] Compose 도입 ( 마이그레이션 ) (0) | 2024.03.28 |
[Android] 다크 테마 적용하기 (0) | 2023.08.03 |
[Android] Room 초기 데이터 설정 (0) | 2023.05.02 |
[AOS] Room 사용시 이미지 비트맵으로 저장하기 (0) | 2022.08.09 |