728x90
화면에 배치된 View에 설정할 수 있는 메뉴
메뉴가 설정된 View를 길게 누르면 메뉴가 나타난다.
주요 메서드
registerForContext
Context Menu를 등록하는 메서드
메서드의 매개 변수로 넣어준 View 객체에 메뉴가 설정된다.
onCreateContextMenu
View를 길게 누르면 호출되는 메서드
여기에서 메뉴를 구성한다.
package com.example.contextmenu
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.ContextMenu
import android.view.MenuItem
import android.view.View
import android.widget.AdapterView
import android.widget.ArrayAdapter
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
val data1 = arrayOf(
"항목1", "항목2", "항목3", "항목4", "항목5"
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, data1)
list1.adapter= adapter
list1.setOnItemClickListener { parent, view, position, id ->
textView.text = "리스트부의 항목 클릭 : ${data1[position]}"
}
// ContextView를 View에 등록
registerForContextMenu(textView)
registerForContextMenu(list1)
}
override fun onCreateContextMenu(
menu: ContextMenu?,
v: View?,
menuInfo: ContextMenu.ContextMenuInfo?
) {
super.onCreateContextMenu(menu, v, menuInfo)
// 길게 누른 View의 id로 분기한다.
when (v?.id) {
R.id.textView -> {
menu?.setHeaderTitle("텍스트뷰의 메뉴")
menuInflater.inflate(R.menu.menu1,menu)
}
R.id.list1 ->{
// 사용자가 길게 누른 항목 인덱스 번호를 파악하기 위해
val info = menuInfo as AdapterView.AdapterContextMenuInfo
menu?.setHeaderTitle("리스트뷰의 메뉴 : ${info.position}")
menuInflater.inflate(R.menu.menu2,menu)
}
}
}
override fun onContextItemSelected(item: MenuItem): Boolean {
// 리스트 뷰의 position
var position = 0
when (item.itemId) {
R.id.list_item1,R.id.list_item2 ->{
// MenuInfo 객체를 추룰한다.
val info = item.menuInfo as AdapterView.AdapterContextMenuInfo
position = info.position
}
}
when (item.itemId) {
R.id.text_item1 -> {
textView.text = "텍스트 뷰의 메뉴 1을 눌렀습니다"
}
R.id.text_item2 -> {
textView.text = "텍스트 뷰의 메뉴 2을 눌렀습니다"
}
R.id.list_item1 -> {
textView.text="리스트 뷰의 메뉴 1을 눌렀습니다 : $position"
}
R.id.list_item2 -> {
textView.text="리스트 뷰의 메뉴 2을 눌렀습니다 : $position"
}
}
return super.onContextItemSelected(item)
}
}



728x90
'안드로이드 > Menu' 카테고리의 다른 글
안드로이드 bottomappbar 키보드 활성화 시 화면 위로 올라가는 현상 제거 (0) | 2022.08.02 |
---|---|
안드로이드 Popup Menu (0) | 2022.06.08 |
안드로이드 Option Menu (0) | 2022.06.08 |