바텀 네비게이션 메뉴 파일 생성
res에 menu 폴더를 하나 만든다.
menu 폴더 안에 바텀 네비게이션의 탭 개수와 들어갈 아이콘이나 텍스트를 작성한 xml 파일을 만든다.
<bottomnavigation_menu.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/bottomnavigation_main_study" app:showAsAction="ifRoom"
        android:icon="@drawable/ic_face" android:title="학습하기" />
    <item android:id="@+id/bottomnavigation_main_course" app:showAsAction="ifRoom"
        android:icon="@drawable/ic_course" android:title="코스" />
    <item android:id="@+id/bottomnavigation_main_mypage" app:showAsAction="ifRoom"
        android:enabled="true" android:icon="@drawable/ic_home" android:title="마이페이지" />
</menu>
<item> 개수가 탭의 개수이며 탭은 다음 코드로 수정할 수 있다.
android:icon="@drawable/ic_face"
// 바텀 네비게이션에 들어갈 아이콘
android:title="학습하기"
// 아이콘 밑에 들어갈 텍스트
Activity 생성
바텀 네비게이션을 적용할 Activity 파일을 만든다. (ex. MainActivity)
함께 만들어진 xml 파일에 다음과 같이 코드를 작성한다.
<activity_main.xml>
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
<!--바텀 네비게이션을 제외한 윗 공간-->
    <FrameLayout
        android:id="@+id/framelayout_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </FrameLayout>
<!--바텀 네비게이션-->
    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottomnavigation_main"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:menu="@menu/bottomnavigation_menu">
    </com.google.android.material.bottomnavigation.BottomNavigationView>
</androidx.constraintlayout.widget.ConstraintLayout>
탭 별 Fragment 생성
탭을 선택할 때마다 바뀔 Fragment를 탭 개수만큼 생성해준다.
ex) StudyFragment, CourseFragment, MypageFragment
생성 후에는 아까 바텀 네비게이션을 적용하려고 만든 파일(MainActivity)에 아래와 같이 코드를 작성한다.
<MainActivity.kt>
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.cookandroid.zerozone.course.CourseFragment
import com.cookandroid.zerozone.databinding.ActivityMainBinding
import com.cookandroid.zerozone.main.StudyFragment
import com.cookandroid.zerozone.mypage.MypageFragment
class MainActivity : AppCompatActivity() {
    private lateinit var binding: ActivityMainBinding
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding=ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        binding.bottomnavigationMain.run{
            setOnItemSelectedListener {
                when(it.itemId){
                    R.id.bottomnavigation_main_study-> {
                        supportFragmentManager.beginTransaction().replace(R.id.framelayout_main, StudyFragment()).commit()
                    }
                    R.id.bottomnavigation_main_course->{
                        supportFragmentManager.beginTransaction().replace(R.id.framelayout_main, CourseFragment()).commit()
                    }
                    R.id.bottomnavigation_main_mypage->{
                        supportFragmentManager.beginTransaction().replace(R.id.framelayout_main, MypageFragment()).commit()
                    }
        }
                true
    }
            selectedItemId=R.id.bottomnavigation_main_study
            //첫번째 탭이 선택된 상태로 있도록
}
이후 실행하면 탭을 선택할 때마다 Fragment가 바뀌는 것을 볼 수 있다.
![]()  | 
![]()  | 
![]()  | 
'Android > Kotlin' 카테고리의 다른 글
| [Kotlin] 레이아웃 테두리 및 모서리 설정 (0) | 2023.01.26 | 
|---|---|
| [Kotlin] javax.net.ssl.SSLException: Unable to parse TLS packet header (0) | 2022.08.24 | 
| [Kotlin] Toolbar & 뒤로가기 적용하기 (0) | 2022.07.15 | 
| [Kotlin] Action Bar 숨기기 (0) | 2022.05.04 | 
| [Kotlin] View Binding (0) | 2022.05.03 | 



										
									
댓글