Create Footer with BottomNavigationView

less than 1 minute read

BottomNavigationView를 이용해서 Footer만들기

문제

  • Activity로 화면을 구성하면서 모든 Activity가 하나의 Footer를 공유하도록 하고 싶었다.
    • 뭔가 효율적이지 못하면서 DRY원칙을 유지하기가 까다롭다는걸 느낌.
  • 이런저런 시도를 하다가 BottomNavigationView를 이용해서 Footer를 만들고 Footer의 메뉴가 클릭되면 Fragment를 이용해서 화면을 구성한다.

해결

  1. gradle에 implements문 추가
    implementation 'com.google.android.material:material:1.0.0-rc01'
    
  2. Footer 리소스 구현
  3. Main 레이아웃 XML에 FrameLayout 추가
  4. Main 레이아웃 XML에 BottomNavigationView 추가
  5. Fragment 리소스 작성
  6. Fragment 클래스 작성
  7. MainActivity에 초기화면 설정과 Footer 클릭에 따라서 Fragment 교체가 이루어질 수 있도록 구현

추가 작업

  • 특정 BottomNavigationView item이 선택된 상태라도, 아이콘의 위치가 변하지 않도록 BottomNavigationView에 설정 추가. (선택된 아이템의 아이콘이 위로 조금씩 올라가도록 표현되는 효과를 제거)
    pp:labelVisibilityMode="unlabeled"
    
  • 선택된 item의 아이콘의 색상이 바뀌는 효과는 없애기 위해 MainActivity에 설정 추가.
    bottomNavigationView.setItemIconTintList(null);
    

생각

  • 그럼 Activity보다 Fragment만을 사용해서 앱을 구성하는 경우가 더 많겠는데?
  • 확실히 로직이 나눠져서 관리하기 쉬워졌다.