TabLayout
Tablayout도 gradle에서 추가해줘야 된다
implementation 'com.google.android.material:material:1.4.0'
Tablayout은
tab을 담당하는 TabLayout,
화면을 담당하는 ViewPager,
Tablayout과 ViewPager를 연결해주는 Adapter로 구성되어 있다
Tablayout 구현하기
xml에 TabLayout, ViewPager를 추가해준다
먼저 탭을 구현해 보겠다
결과
이제 뷰 페이저를 구현해 보겠다
페이저에 여러 화면을 넣기 위해서는 어댑터를 사용한다
페이저를 위한 어댑터를 만들어 주겠다
FragmentStateAdapter를 상속받고 FragmentManager와 Lifecycle를 사용해보겠다
어댑터 안에는 Fragment를 담을 수 있는 리스트를 선언해 주었으며
리스트에 Fragment를 추가할 수 있게 add메소드를 추가해 주었다
createFragment는 Fragment 하나를 리턴하는 부분이고
getItemCount은 전체 개수를 리턴하는 부분이다
Fragment를 간단하게 2개 만들고
어댑터를 이용하여 뷰 페이저를 구현해 주었다
결과
화면을 드래그하면 화면이 바뀌지만
아직 탭과 연결을 하지 않아서
탭을 눌러도 화면이 바뀌지 않고,
화면을 드래그해도 탭이 바뀌지 않는 상태이다
TabLayout과 뷰페이저 연결
간단하게 TabLayoutMediator을 이용하면 된다
TabLayoutMediator의 인자로 TabLayout과 뷰페이저를 전달하면 서로 연결된다
이제 탭을 클릭하면 뷰페이저도 바뀌고
뷰페이저를 바꾸면 탭도 바뀐다
다만 TabLayoutMediator을 사용하게 되면
기존 TabLayout에서 만든 탭을 삭제하고 새로 탭을 만들기 때문에
이렇게 나중에 탭 이름을 설정해줘야 한다
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.