이번 시간에는 이전에 만든 NavigationView에 메뉴를 만들어 적용해보겠습니다.
이전 포스팅은 아래 링크를 들어가시면 됩니다.
2022.07.01 - [안드로이드] - [안드로이드 코틀린] DrawerLayout Navigation 만드는 방법 part1 - 화면 만들기
res -> New -> Android Resource File
File name은 drawer_menu
Resource type은 Menu를 선택하신 후 Ok를 누르시면 메뉴 폴더가 자동 생성되면서, 그 안에 파일이 생성됩니다.
- 설명 -
1. 메뉴 아이템을 그룹으로 묶어 중복 선택 방지
2. 아이콘 res -> drawable
<?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>
- 설명 -
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>
- 설명 -
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 설정
2022.06.14 - [안드로이드] - [안드로이드 코틀린] Tab Custom Animation part1 - 화면 구성 및 설정
2022.06.06 - [안드로이드] - [안드로이드 코틀린] 커스텀 달력 만드는 방법 part1 화면 구성
[안드로이드 코틀린] DrawerLayout Navigaion 만드는 방법 part4 - 네비게이션 호출 메뉴 버튼 만들기 (0) | 2022.07.04 |
---|---|
[안드로이드 코틀린] DrawerLayout Navigaion 만드는 방법 part3 - 헤더 화면 만들기 (0) | 2022.07.03 |
[안드로이드 코틀린] DrawerLayout Navigation 만드는 방법 part1 - 화면 만들기 (0) | 2022.07.01 |
[안드로이드 코틀린] 전화 걸기(Intent.ACTION_VIEW) 기능 만들어보기 (0) | 2022.06.30 |
[안드로이드 코틀린] 큐알코드(QR CODE) 스캔하는 방법 (0) | 2022.06.29 |
댓글 영역