상세 컨텐츠

본문 제목

[안드로이드 코틀린] DrawerLayout Navigaion 만드는 방법 part2 - 메뉴 만들기

안드로이드

by aries574 2022. 7. 2. 11:29

본문


이번 시간에는 이전에 만든 NavigationView메뉴를 만들어 적용해보겠습니다.

이전 포스팅은 아래 링크를 들어가시면 됩니다.

2022.07.01 - [안드로이드] - [안드로이드 코틀린] DrawerLayout Navigation 만드는 방법 part1 - 화면 만들기

 

[안드로이드 코틀린] DrawerLayout Navigation 만드는 방법 part1 - 화면 만들기

이번에는 옆으로 밀면 숨겨져 있는 메뉴를 보여주는 DrawerLayout 화면 만드는 방법을 알아보겠습니다. 목차 1. 실행 화면 2. 라이브러리 등록 3. 테마 설정 4. 툴바 화면 만들기 toolbar_layout.xml

aries574.tistory.com


목차

1. 실행 화면
2. 메뉴 만들기 drawer_menu.xml
3. 메인 화면 구현 activity_main.xml
4. 메인 코드 구현 MainActivity.kt


1. 실행 화면


2. 메뉴 만들기 drawer_menu.xml

res -> New -> Android Resource File

File name은  drawer_menu

Resource type은 Menu를 선택하신 후 Ok를 누르시면 메뉴 폴더가 자동 생성되면서, 그 안에 파일이 생성됩니다.

 - 설명 - 

1. 메뉴 아이템을 그룹으로 묶어 중복 선택 방지

2. 아이콘 res -> drawable

ic_slideshow.xml
0.00MB
ic_photo.xml
0.00MB
ic_camera.xml
0.00MB

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav_camera"
            android:icon="@drawable/ic_camera"
            android:title="Camera"/>
        <item
            android:id="@+id/nav_photo"
            android:icon="@drawable/ic_photo"
            android:title="Photo"/>
        <item
            android:id="@+id/nav_slideShow"
            android:icon="@drawable/ic_slideshow"
            android:title="SlideShow"/>
    </group>
</menu>


3. 메인 화면 구현 activity_main.xml

- 설명 -

1. android:id="@+id/navigationView"

NavigationView id 만들기

2. app:menu="@menu/drawer_menu"

navigationView에 메뉴 적용

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout 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:id="@+id/drawerLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <include layout="@layout/toolbar_layout" />
    </LinearLayout>

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/navigationView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="left"
        android:fitsSystemWindows="true"
        app:menu="@menu/drawer_menu" />

</androidx.drawerlayout.widget.DrawerLayout>


4. 메인 코드 구현 MainActivity.kt

- 설명 -

1. onNavigationItemSelected

 네비게이션안의 메뉴 선택시 실행

2. isChecked

 해당 메뉴 선택 표시

3. drawerLayout.closeDrawers()

DrawerLayout 닫기

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val toolbar: Toolbar = findViewById(R.id.toolbar)
        val navigationView: NavigationView = findViewById(R.id.navigationView)
        val drawerLayout: DrawerLayout = findViewById(R.id.drawerLayout)

        //액션바에 toolbar 셋팅
        setSupportActionBar(toolbar)

        //네비게이션뷰 아이템 선택 이벤트
        navigationView.setNavigationItemSelectedListener(
            object: NavigationView.OnNavigationItemSelectedListener{
                override fun onNavigationItemSelected(item: MenuItem): Boolean {

                    when(item.itemId){

                        R.id.nav_camera -> {

                            item.isChecked = true
                            displayMessage("selected camera")
                            drawerLayout.closeDrawers()
                            return true
                        }

                        R.id.nav_photo -> {
                            item.isChecked = true
                            displayMessage("selected photo")
                            drawerLayout.closeDrawers()
                            return true
                        }

                        R.id.nav_slideShow -> {
                            item.isChecked = true
                            displayMessage("selected slideShow")
                            drawerLayout.closeDrawers()
                            return true
                        }

                        else -> {
                            return true
                        }
                    }//when
                }//onNavigationItemSelected
            }//NavigationView.OnNavigationItemSelectedListener
        )//setNavigationItemSelectedListener


    }//onCreate

    //메시지 알림
    private fun displayMessage(message: String){
        Toast.makeText(applicationContext, message, Toast.LENGTH_SHORT).show()
    }

}//MainActivity

2022.06.24 - [안드로이드] - [안드로이드 코틀린] Database Room 사용법 part1 - Room 설정

 

[안드로이드 코틀린] Database Room 사용법 part1 - Room 설정

안드로이드에서 앱 내부에 데이터를 관리하는 기능을 하는 Room 사용법에 대하여 알아보겠습니다. 이번 시간에는 기본 설정을 해보겠습니다. 아래 링크를 들어가시면 Room에 대한 상세한 정보를

aries574.tistory.com

2022.06.14 - [안드로이드] - [안드로이드 코틀린] Tab Custom Animation part1 - 화면 구성 및 설정

 

[안드로이드 코틀린] Tab Custom Animation part1 - 화면 구성 및 설정

앞으로 TabLayout을 직접 만들어 애니메이션 기능까지 넣어보도록 하겠습니다. 이번 시간에는 화면 구성 및 설정을 만들어 보겠습니다. 목차 1. 실행 화면 2. dataBinding 설정 build.gradle 3. 테마 변경 t

aries574.tistory.com

2022.06.06 - [안드로이드] - [안드로이드 코틀린] 커스텀 달력 만드는 방법 part1 화면 구성

 

[안드로이드 코틀린] 커스텀 달력 만드는 방법 part1 화면 구성

이번 시간부터 코틀린 버전 커스텀 달력을 만들어보겠습니다. 이번 포스팅은 화면 구성입니다. 목차 1. 실행 화면 2. dataBinding 설정 3. 메인 화면 구성 activity_main.xml 1. 실행 화면 2. dataB..

aries574.tistory.com

 

반응형

관련글 더보기

댓글 영역