메뉴
옵션 메뉴
키패드의 메뉴 버튼 또는 화면 오른쪽 위의 메뉴 아이콘을 눌렀을 때 화면 하단에 나오는 메뉴
화면이 넘어갈 정도로 목록이 많으면 스크롤해서 선택 가능함
옵션 메뉴에서 XML파일을 이용하는 방식
1. 메뉴 폴더 생성 및 메뉴 XML파일 생성·편집 -> 메뉴 코딩
2. Kotlin코딩 : onCreateOptionMenu() 메소드 오버라이딩 -> 메뉴 파일 등록
3. Kotlin코딩 : onOptionsItemSelected() 메소드 오버라이딩 ->메뉴 선택 시 동작할 내용 코딩
컨텍스트 메뉴
위젯 등을 롱클릭하면 나오는 메뉴
컨텍스트 메뉴에서 XML파일을 이용하는 방식
1. 메뉴 폴더 생성 및 메뉴 XML파일 생성·편집 -> 메뉴 코딩
2. Kotlin코딩 : onCreate() 안에 registerForContextMenu()로 등록 -> 메뉴를 사용할 위젯 등록
3. Kotlin코딩 : onCreateContextMenu() 메소드 오버라이딩 -> 메뉴파일 등록
4. Kotlin코딩 : onContextItemSelected() 메소드 오버라이딩 -> 메뉴 선택 시 동작할 내용 코딩
0. 메뉴 생성 전 준비단계
▶ 폴더와 파일 생성하는 방법
1. menu폴더 생성
2. 메뉴 폴더 안에 메뉴화면으로 쓸 xml파일 생성
해당 탭 누르면 xml파일의 이름을 지정하고 생성하면 완료
▶ 필요한 메소드의 override할 코드를 가져오기
커서를 onCreat() 밖에 두고 아래 과정을 실행
이런식으로 오버라이딩 해야할 코드를 간편하게 가져올 수 있음
xml파일은 옵션이나 컨텍스트나 똑같음!
코딩 방식이 다를뿐..
# menu1.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="배경색(빨강)"
android:id="@+id/itemRed"/>
<item android:title="배경색(빨강)"
android:id="@+id/itemGreen" />
<item android:title="배경색(빨강)"
android:id="@+id/itemBlue"/>
<item android:title="버튼변경" >
<menu >
<item android:title="버튼 45도 회전"
android:id="@+id/subRotate"/>
<item android:title="버튼 2배 확대"
android:id="@+id/subSize"/>
</menu>
</item>
</menu>
1. 옵션 메뉴 만들기
1. 옵션 메뉴 화면에 붙이기
onCreateOptionsMenu메소드 사용
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
super.onCreateOptionsMenu(menu) //꼭 기존에 써있는 return을 지워주기! 안그러면 메뉴 안보임
var mInflator = menuInflater
mInflator.inflate(R.menu.menu1,menu)
return true
}
2. 옵션 메뉴 기능 구현하기
onOptionsItemSelected메소드 사용
override fun onOptionsItemSelected(item: MenuItem): Boolean {
//return super.onOptionsItemSelected(item)
when(item.itemId){
R.id.itemRed -> {
baseLayout.setBackgroundColor(Color.RED)
return true
}
R.id.itemGreen -> {
baseLayout.setBackgroundColor(Color.GREEN)
return true
}
R.id.itemBlue -> {
baseLayout.setBackgroundColor(Color.BLUE)
return true
}
R.id.subRotate -> {
button.rotation = 45f
return true
}
R.id.subSize -> {
button.scaleX = 2f
button.scaleY = 2f
return true
}
}
}
2. 컨텍스트 메뉴 만들기
1. 컨텍스트 메뉴 등록하기
onCreate()메소드 안에 적어줌
registerForContextMenu메소드 사용
registerForContextMenu(button)
2. 컨텍스트 메뉴 화면에 붙이기
onCreateContextMenu메소드 사용
//메뉴만들기 - 컨텍스트 메뉴
override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
super.onCreateContextMenu(menu, v, menuInfo)
var mInflator = this.menuInflater
if(v===button){
menu!!.setHeaderTitle("배경색 변경")
mInflator.inflate(R.menu.menu2,menu)
}
if(v===button2){
menu!!.setHeaderTitle("크기/회전")
mInflator.inflate(R.menu.menu3,menu)
}
}
3. 컨텍스트 메뉴 기능 구현하기
onContextItemSelected메소드 사용
var i:Float=45f
var j:Float = 2f
//메뉴기능 - 컨텍스트 메뉴
override fun onContextItemSelected(item: MenuItem): Boolean {
when(item.itemId){
R.id.subRotate->{
imageView.rotation = i
i+=45
return true
}
R.id.subSize->{
imageView.scaleX = j
imageView.scaleY = j
j++
return true
}
R.id.btnRed->{
baseLayout.setBackgroundColor(Color.RED)
return true
}
R.id.btnGreen->{
baseLayout.setBackgroundColor(Color.GREEN)
return true
}
R.id.btnBlue->{
baseLayout.setBackgroundColor(Color.BLUE)
return true
}
}
return false
}
'Android > Kotlin App' 카테고리의 다른 글
[Kotlin App] TabHost (0) | 2021.05.03 |
---|---|
[Kotlin App] 목록 대화상자 (0) | 2021.04.19 |
[Kotlin] ?(물음표)와 !!(느낌표 두개)의 사용 (0) | 2021.04.17 |
[Kotlin App] 액티비티 / 인텐트 (0) | 2021.04.13 |
[Kotlin] 안드로이드를 위한 Kotlin 문법 (0) | 2021.03.22 |
댓글