Android

[Android/Kotlin] BottomNavigationView

dev_zoe 2021. 8. 20. 00:12
반응형

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_frame"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorNest">

        <FrameLayout
            android:id="@+id/outerFrame"
            android:layout_width="0dp"
            android:layout_height="0dp"
            app:layout_constraintBottom_toTopOf="@+id/tabBottom"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent" />

        <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/tabBottom"
            android:layout_width="0dp"
            android:layout_height="?attr/actionBarSize"
            android:background="#FFFFFF"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:menu="@menu/bottomtab_view" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</FrameLayout>

 

MainActivity

class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate)  {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        initNavigationBar()
    }

    private fun initNavigationBar() {
        binding.tabBottom.itemIconTintList = null #bottomnavigationview의 아이콘에 color tint를 입히지 않을때

        binding.tabBottom.run {
            setOnNavigationItemSelectedListener {
                when(it.itemId) {
                    R.id.home -> {
                        changeFragment(HomeFragment())
                    }
                    R.id.alarm -> {
                        changeFragment(AlarmFragment())
                    }
                    R.id.my -> {
                        changeFragment(MyFragment())
                    }
                }
                true
            }
            selectedItemId = R.id.home
        }
    }

    private fun changeFragment(fragment: Fragment) {
        supportFragmentManager .beginTransaction().replace(R.id.outerFrame, fragment) .commit()
    }

 

res/menu/bottomtab_view.xml

<?xml version="1.0" encoding="utf-8"?>
<menu
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/home"
        app:showAsAction="always"
        android:icon="@drawable/home_tab_home"
        android:enabled="true"
        android:title="홈" />
    <item
        android:id="@+id/alarm"
        app:showAsAction="always"
        android:icon="@drawable/home_tab_alarm"
        android:title="알림" />
    <item
        android:id="@+id/my"
        app:showAsAction="always"
        android:icon="@drawable/home_tab_mypage"
        android:enabled="true"
        android:title="MY" />
</menu>

 

반응형