푸르미르

[kotlin]Navigation 바 만들기 본문

Android

[kotlin]Navigation 바 만들기

((•_•)) 2021. 2. 5. 12:40

나는 어둠의 자식이니까 테마를 android:theme="@style/Theme.Design.NoActionBar"로 바꾸겠다. 

 

여기서 왼쪽의 메뉴 imageView를 클릭하면

 

왼쪽에서부터 네비게이션 메뉴바가 슉 나오고

 

 

3개중 하나를 선택하면, 토스트 메세지가 나오도록 간단히 제작하였다.

또 네비게이션 바에서 하나의 item이 선택되었을 때 네비게이션 바가 자동으로 닫히고, 네비게이션

바가 열려있는 상태에서 백버튼을 누르면 앱이 finish 되는것이 아닌 네비게이션 바가 닫히는 기능을 부여해보겠다.

 

navigation바를 사용하기 위해서는 첫째로, 라이브러리를 추가해야한다. 

 

저 퍼런 부분을 클릭해서 build.grandle(modul.~app)으로 간다.

dependencies 가 아래부분에 위치해 있는데, 여기서 라이브러리를 추가해준다.

implementation 'com.google.android.material:material:1.0.0'

 

그 후 res파일에 menu 리소스 디렉터리를 추가해준 후 네비게이션 메뉴.xml을 작성해준다.

 

 

그리고 activity_main.xml로 가서 view에 위에서 만든 메뉴를 등록한다.

네비게이션 바 구현을 위해 최상위 태그를 바꿔준다.

androidx.drawerlayout.widget.DrawerLayout로

그리고 그 메뉴 imageView(id:btn_navi)를 클릭해야 네비게이션 뷰가 왼쪽으로 부터 슉 나오는데, 이때 메뉴 imageView를 구현한다.

 

그리고 아까 item이 3개인 네비게이션 바를 만들어놨는데 걔네들을 화면에 적용을 해야한다.

 

그 네비게이션 바를 화면에 구현할 때 com.google.android.material.navigation.NavigationView태그를 사용해 준다.

이때 중요한 것은 layout_gravity의 value를 start라고 해야한다. 그 이유는 만약 이 속성이 없다면 그 메뉴 imageView(id:btn_navi)위에 네비게이션 바가 가려버려 메뉴버튼이 보이지 않는다. 메뉴버튼 누르고 난 후 네비게이션 바가 왼쪽에서 슉 나타나야 하기 때문에 먼저 화면의 왼쪽 밖에 네비게이션 바를 놓기 위해서 layout_gravity의 value를 start라고 하는 것이다.

자 이렇게 하고 이제 메인 .kt파일로 가서 메뉴버튼이 눌렸을 때 네비게이션 바가 왼쪽에서부터 슉 나오게 구현해보자.

 

네비게이션 바가 열렸을 때 3가지 item이 클릭되었을 때의 실행할 함수를 구현해보자.

 

그리고, 최종적으로 중요한 코드인데, onCreat함수에서 이 3가지 item들에게 클릭속성을 부여해야한다. 그래야 클릭되서 위에서 만든 onNavigationItemSelected함수가 실행되어 지정한 동작을 하게 할 수 있다.

 

 

그리고 마지막

네비게이션 바가 열려있는데 뒤로가기 버튼을 눌렀을 때 앱이 꺼지지 않고 네비게이션 바가 닫히게 하는 기능을 부여해보자.

백버튼에대한 동작 함수는 onBackPressed함수인데 이 함수를 오버라이드 해서 우리가 원하는 대로 동작할 수 있도록 해보자.