GDSC HUFS 3기/Android with Kotlin Team 2

[2팀]14-9,10 화면 구성하기: 탭메뉴 뷰페이저와 프래그먼트 & 리사이클러 뷰 어댑터

제주도감귤쥬스 2021. 11. 9. 18:35

이 글은 YouTube 한빛미디어 채널의 [코틀린 안드로이드 기초 강의]를 참고하여 작성하였습니다.

작성자 : 강소영

개발환경은 Windows, Android Studio입니다. (본문3)

 

 

 

35. 탭메뉴 뷰페이저(View pager)와 프래그먼트

1. 뷰페이저, 탭 메뉴(레이아웃)

뷰페이저는 화면 전환을 구현하는 것을 말하고, 탭이 구성된 한 라인을 탭 메뉴(레이아웃)이라고 한다.

 

뷰페이저

 

탭 메뉴(레이아웃)

 

2. 4개의 프래그먼트를 뷰페이저 안에 넣고, 뷰페이저를 스와이프해서 화면을 이동시켜보기

 

먼저 프래그먼트 4개를 만들어준다.

New->Fragment->Fragment (Blank)

4개의 프래그먼트를 헷갈리지 않도록 이름을 적절하게 지어주고 텍스트뷰를 생성해준다.

하나를 만든 뒤 복사-붙여넣기를 하면 4개를 빠르게 생성할 수 있다.

 

4개의 프래그먼트와 각각의 레이아웃 형성

 

Palette->Containers->ViewPager2를 드래그해 화면에 가져다 놓고 Constraint 해준다.

 

Adapter를 만들어준다.

Adapter생성 시 FragmentPagerAdapter를 이용하는데, 이를 이용하기 위해서는 구현해야 하는 메소드가 있으므로 클릭하여 Implement members를 누른 후 뜨는 메소드들을 불러온다.

Implenent members

 

구현 시 필요한 메소드. 전부 선택하고 OK로 불러온다.

 

코드는 두 줄이면 충분!

2/3부근에 있는 희미한 세로선은 "코드를 여기까지 작성하고 엔터치는 것을 권장합니다"를 의미함.

 

뷰페이저 위젯과 adapter, fragmentList 이 세 개를 연결시키기 위해 Gradle에서 viewBinding 설정을 해준 뒤 MainActivity에도 binding을 만들어준다.

 

Gradle에서 viewBinding 설정

 

MainActivity에 binding 생성 후 코드를 짜주면 된다.

주석을 잘 확인해보자!

 

Emulator로 잘 구동되는지 확인해본다.

 

스와이프하여 화면이 잘 넘어가면 성공.

 

탭 레이아웃을 뷰페이저와 함께 배치해보기

Containers->TabLayout을 화면에 끌어다 놓고 Constraint 해준 뒤 코드를 짜준다.

마지막에 꼭 .attach()를 작성해주어야한다.

 

Emulator로 잘 구동되는지 확인해본다.

탭메뉴를 클릭했을 때 화면이 넘어가면 성공.

 

잡기술)with 스코프 함수를 이용해 binding이 반복되는 곳의 코드를 짧게 수정해준다.

 

잡기술2)인디케이터를 위로 보내고 싶으면 tabindicatorGravity를 top으로 설정해주면 된다.

 

tabindicatorGravity->top

 

인디케이터가 위쪽으로 이동한 모습.

 

36. 탭메뉴 뷰페이저(View pager)와 리사이클러 뷰 어댑터

1. 리사이클러 뷰 어댑터란?

앱에서 관리되는 데이터 집합을 화면에 유연하게 표시할 때 사용되는 뷰 그룹(View Group)이며, 화면을 전환할 때 마그네틱과 같은 효과를 주고싶을 때 사용하는 기능이기도 하다.

 

2. 뷰페이저 생성하기

뷰페이저를 하나 만들어준 뒤 Constraint를 해준다. (이 때 먼저 binding을 해도 된다.)

 

layout->New에서 새로운 레이아웃을 한 개 생성한 뒤 TextView를 만들고 Constriant 해준다. 이후 코드를 작성해주면 된다.

35에서와 마찬가지로 먼저 Adapter와 관련된 코드를 작성한 뒤 mainActivity에서 binding을 통해 코드를 완성시켜준다.

 

Adapter 코드

 

binding하기

 

Amulator로 잘 작동하는지 확인한 후 탭 레이아웃과 연결해준다. 이 과정은 35와 동일하다. 코드는 유동적으로 바꿔서 작성해주면 된다.

 

이후 TextView를 여러개 생성해보고, List별로 데이터를 load해주는 코드를 작성해준다.

 

어댑터 클래스

 

데이터를 로드하는 리스트 코드 작성

 

Emulator로 결과 확인

잘 구동되면 성공.