이번에는 BottomNavigationView의 모든 아이템이 선택되지 않은 상태로 만들어보려고 한다.
이 동작을 구현하게 된 배경은 BottomNavigationView와 FloatingActionButton을 같이 사용하기 위함이었다.
FloatingActionButton(줄여서 FAB라 부르겠다)을 BottomAppBar 안에 cradle 모드로 anchor 시키며 사용하던 중,
FAB를 눌렀을 때 다른 프래그먼트가 보여야하므로
이 때 BottomNavigationView(줄여서 BNV)의 다른 모든 아이템이 선택된 상태로 있으면 안됐다.
BNV의 모든 아이템을 선택되지 않은 상태로 만들기 위해 여러 사이트를 돌아다니다 짧은 해결법을 찾았다.
일단 나는 코틀린을 사용하고 있어서 확장함수 형태로 구현해보았다.
아래 코드를 첨부하겠다.
https://gist.github.com/BonusTrack02/f580ca3c6bc4f09241c82b4cb20ce2c6
getMenu().setGroupCheckable(0, true, false)를 하는 이유를 설명하자면
세번째 파라미터인 exclusive값이 false일 때, 각 아이템을 독립적으로 선택할 수 있게된다.
이후 반복문을 통해 각 아이템의 체크 상태를 false로 만들고,
다시 getMenu().setGroupCheckable(0, true, true)로 하나의 아이템만 선택 가능하도록 설정한다.
세번째 파라미터가 true일 때, 해당 그룹에서는 아이템을 선택하게 되면 다른 아이템은 자동으로 선택 해제된다.
'Android' 카테고리의 다른 글
Codelab으로 Room 알아보기 - 3. Create the DAO (0) | 2023.09.23 |
---|---|
Android BottomSheet Material Theme 적용하기 (0) | 2023.09.15 |
Android BottomSheetDialogFragment Scrim 영역 터치 동작 (0) | 2023.09.11 |
Android BottomSheetDialogFragment Height 조절하기 (0) | 2023.08.28 |
Android DialogFragment Button Text Size(텍스트 크기 조절) (0) | 2023.08.27 |