반응형
Option Menu
- 안드로이드에서 화면 하나당 하나씩 가질 수 있는 메뉴를 의미
- 현재 보이는 화면(Activity, 눈에 보이는 화면) 의 메인 메뉴
- xml(메뉴 고정인 경우), code(메뉴 유동적으로 생성하는 경우) 로 메뉴 구성 가능
주요 메서드
onCreateOptinosMenu : 화면을 관리하는 객체인 Activity 객체가 만들어 질 때 자동으로 호출
-> 이 메서드에서 메뉴 생성, True 반환시 메뉴 나타남
override fun onCreateOptionsMenu(menu: Menu): Boolean {
// xml로 메뉴 구성
menuInflater.inflate(R.menu.main_menu, menu) // 매개변수로 들어오는 메뉴 객체 넣어줌
// code로 메뉴 구성
menu?.add(Menu.NONE,Menu.FIRST, Menu.NONE, "코드 메뉴1") // 메뉴는 그룹을 정해놓고 그 그룹 안에서 작업이 가능
// 첫번째 매개변수 : 그룹의 아이디 (사용 안 할 경우 NONE)
// 두번째 매개변수 : 메뉴 아이디 (메뉴 아이디로 사용하라고 제공하는 값이 FIRST)
// 세번째 매개변수 : 메뉴를 어떤한 순서로 배치할 것인다 (NONE 으로 처리하면 작성 순서대로 배치)
// 네번째 매개변수 : 배치된 메뉴 항목의 이름
//menu?.add(Menu.NONE,Menu.FIRST + 1, Menu.NONE, "코드 메뉴2")
val sub = menu?.addSubMenu("코드 메뉴2") // 하위 메뉴 만들기
sub?.add(Menu.NONE,Menu.FIRST + 10, Menu.NONE, "코드 메뉴2-1")
sub?.add(Menu.NONE,Menu.FIRST + 20, Menu.NONE, "코드 메뉴2-2")
menu?.add(Menu.NONE,Menu.FIRST + 2, Menu.NONE, "코드 메뉴3")
//return super.onCreateOptionsMenu(menu)
return true
}
onOptionsItemSelected : 사용자가 메뉴를 선택했을 때 자동 호출
// XML로 구성
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// 분기문으로 아이템별 클릭 동작 구현
when (item.itemId) {
R.id.item1 -> {
binding.textView.text = "메뉴1을 눌렸습니다."
}
R.id.item2 -> {
binding.textView.text = "메뉴2을 눌렸습니다."
}
R.id.item3 -> {
binding.textView.text = "메뉴3을 눌렸습니다."
}
}
return super.onOptionsItemSelected(item)
}
// Code로 구성
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// 분기문으로 아이템 별 클릭 동작 구현
when (item.itemId) {
Menu.FIRST -> {
binding.textView.text = "메뉴1을 눌렸습니다."
}
Menu.FIRST + 1 -> {
binding.textView.text = "메뉴2를 눌렸습니다."
}
Menu.FIRST + 2 -> {
binding.textView.text = "메뉴3을 눌렸습니다."
}
}
return super.onOptionsItemSelected(item)
}
하위 메뉴 만들기
- item 안에 새로운 menu-item 을 넣어 만듬 (item 클릭시 코드 작성은 위와 동일)
// XML로 구성
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// 분기문으로 아이템별 클릭 동작 구현
when (item.itemId) {
R.id.item1 -> {
binding.textView.text = "메뉴1을 눌렸습니다."
}
R.id.item2_1 -> {
binding.textView.text = "메뉴2-1을 눌렸습니다."
}
R.id.item2_2 -> {
binding.textView.text = "메뉴2-2을 눌렸습니다."
}
R.id.item3 -> {
binding.textView.text = "메뉴3을 눌렸습니다."
}
}
return super.onOptionsItemSelected(item)
}
// Code로 구성
override fun onOptionsItemSelected(item: MenuItem): Boolean {
// 분기문으로 아이템 별 클릭 동작 구현
when (item.itemId) {
Menu.FIRST -> {
binding.textView.text = "메뉴1을 눌렸습니다."
}
Menu.FIRST + 10 -> {
binding.textView.text = "메뉴2-1을 눌렸습니다."
}
Menu.FIRST + 20 -> {
binding.textView.text = "메뉴2-2을 눌렸습니다."
}
Menu.FIRST + 2 -> {
binding.textView.text = "메뉴3을 눌렸습니다."
}
}
return super.onOptionsItemSelected(item)
}
반응형
'Android' 카테고리의 다른 글
[안드로이드/Menu] Popup Menu (0) | 2023.03.08 |
---|---|
[안드로이드/Menu] Context Menu (0) | 2023.03.06 |
[안드로이드/권한] 권한 등록 및 허가 (0) | 2023.03.02 |
[안드로이드/AdapterView] RecyclerView (0) | 2023.03.01 |
[안드로이드/AdapterView] MultiChoiceListView (0) | 2023.02.28 |