본문 바로가기
안드로이드

[android] CoordinatorLayout 안에서 버튼 클릭으로 Recycerview item 이동

by 아이디생성자 2023. 10. 27.

 

<CoordinatorLayout>
  <AppBarLayout>
    <CollapsingToolbarLayout
      app:layout_scrollFlags="scroll"
      app:layout_behavior="@string/appbar_scrolling_view_behavior">
        
      <!--스크롤시 감추고 상단뷰-->
        
    </CollapsingToolbarLayout>
  </AppBarLayout>
    
  <ConstraintLayout
    app:layout_behavior="@string/appbar_scrolling_view_behavior">
    	
    <!--가려지고 나면 최상단에 남을 뷰-->
    <Button
      android:id="@+id/btn_find_item"
      android:text="아이템 위치로 이동"/>
        
    <!--아이템 위치로 이동시켜줄 스크롤뷰-->
    <NestedScrollView>
      <ConstraintLayout>
        <RecyclerView
          android:orientation="vertical"/>
          
        <TextView
          android:text="NestedScrollView를 사용하여 Recycerview와 같이 노출"/>
      </ConstraintLayout>
    </NestedScrollView>
  </ConstraintLayout>
</CoordinatorLayout>

 

스크롤뷰 안에서 카테고리탭 클릭시 탭이 최상단에 붙으며 하단의 리사이클러뷰의 카테고리 아이템 위치로 이동해야 하는 뷰를 만들어야했다.

위와 같은 구조로 레이아웃을 구성해주고, 버튼 클릭시 y값만큼 이동 시켜주면 된다.

상단의 AppBarLayout이 아직 최상단에 올라가지 않았다면, expanded를 false로 처리한다.

 

btnFindItem.setOnClickListener {
    val itemPos = 0
    val y = rvService.y + rvService.getChildAt(itemPos).y
    nsvTest.smoothScrollTo(0, (y.toInt()))

    ablService.setExpanded(false)
}

댓글