안드로이드/코틀린
[Android] 특정 위치로 스크롤 하기
우늬
2023. 8. 17. 10:52
반응형
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의 위치로 스크롤
이상 포스팅 마칩니다!
궁금하신 사항은 댓글 남겨주세요! 최대한 빨리 확인하고 답변 달겠습니다.
반응형