일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 블록체인
- 코틀린
- pwnable
- UNIQUE constraint failed
- Couldn't read row 0
- 포너블
- 백준
- Drive-By-Download
- SQLiteConstraintException
- col -1 from CursorWindow
- 나이순 정렬
- java.lang.IllegalStateException
- 10814
- 액션바 필요없숴
- pwable.kr
- Docker
- python
- 클라우드란?
- 클라우드가 뭐야
- 페니빙
- tlqkf
- Make sure the Cursor is initialized correctly before accessing data for it.
- 파이썬
- kotlin
- cmd2
- pwnable.kr
- cmd1
- 쏘큩
- 애너그램 그룹
- 6566
- Today
- Total
푸르미르
[kotlin]Navigation 바 만들기 본문
나는 어둠의 자식이니까 테마를 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함수인데 이 함수를 오버라이드 해서 우리가 원하는 대로 동작할 수 있도록 해보자.
'Android' 카테고리의 다른 글
신규 사용자 회원가입 및 비밀번호 재설정 메일 보내기 (0) | 2021.02.11 |
---|---|
액션바 테마 있/없 (0) | 2021.02.05 |
[error]Android SQLite Error : java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. (0) | 2021.01.29 |
[error]SQLiteConstraintException: UNIQUE constraint failed (0) | 2021.01.29 |
[kotlin]나만의 웹브라우저를 만들기. (0) | 2021.01.20 |