BottomNavigation 정리

7376 단어 UMCandroidkotlinUMC

BottomNavigation 이란?


위 화면에서 하단에 위치한 네비게이션 바를 의미합니다.
  • 안드로이드 컴파일 버전 26.1.0 부터 추가되었습니다.
  • 즉 처음부터 있던 뷰가 아닌 중간에 추가된 뷰이며 안드로이드 지원 라이브러리 중 디자인 라이브러리에 속합니다.
  • 그렇기 때문에 app 단위에
    implementation 'androidx.core:core-ktx:1.0.2'
    를 추가해야 합니다.



menu


BottomNavigation 은 res 폴더 밑에 menu를 만들고 그 안에 xml 파일을 정의해야 합니다.
반드시 resource type을 menu로 해주어야 합니다.

예시 코드

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:tools="http://schemas.android.com/tools"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/homeFragment"
        android:icon="@drawable/ic_bottom_home_no_select"
        app:showAsAction="always"
        android:enabled="true"
        android:title="홈"
        tools:ignore="AlwaysShowAction" />
    <item
        android:id="@+id/searchFragment"
        android:icon="@drawable/ic_bottom_search_no_select"
        app:showAsAction="always"
        android:title="검색" />
    <item
        android:id="@+id/lockerFragment"
        android:icon="@drawable/ic_bottom_locker_no_select"
        app:showAsAction="always"
        android:title="보관함" />

</menu>



Fragment 전환


  1. fragment로 사용할 class를 생성합니다.
  2. view binding 을 이용하여 class 에 fragment를 연결합니다.
  3. setOnItemSelectedListener 를 설정합니다.

예시 코드

private fun initBottomNavigation(){

        supportFragmentManager.beginTransaction()
            .replace(R.id.main_frm, HomeFragment())
            .commitAllowingStateLoss()

        binding.mainBnv.setOnItemSelectedListener{ item ->
            when (item.itemId) {

                R.id.homeFragment -> {
                    supportFragmentManager.beginTransaction()
                        .replace(R.id.main_frm, HomeFragment())
                        .commitAllowingStateLoss()
                    return@setOnItemSelectedListener true
                }
            }
    false
}

좋은 웹페이지 즐겨찾기