티스토리 뷰

[Android Studio] 안드로이드 컨텍스트 메뉴 보여주기 짧은 클릭, 긴 클릭 android create context menu short click, long click

 

1. res -> menu -> menu.xml 작성

<?xml version="1.0" encoding="utf-8"?>
<menu  xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item android:id="@+id/menu2"
        android:title="메뉴1" />

    <item android:id="@+id/menu1"
        android:title="메뉴2" />
        
</menu>

 

2. res -> layout -> activity_main.xml -> view 작성

  <Button
            android:id="@+id/button_menu"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent" />

 

3. MainActivity.kt 작성

 
 override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        
        //아래 두 가지 중에 선택해서 사용
        //길게 클릭 했을때 메뉴 나오는 코드
        registerForContextMenu(button_menu)
        
        //짧게 클릭 했을때 메뉴 나오는 코드
        button_menu.setOnClickListener {
            this.registerForContextMenu(it)
            openContextMenu(it)
            unregisterForContextMenu(it)
        }
 }
 

 override fun onCreateContextMenu(menu: ContextMenu?, v: View?, menuInfo: ContextMenu.ContextMenuInfo?) {
        val inflater = menuInflater
        inflater.inflate(R.menu.picture_detail, menu)
        super.onCreateContextMenu(menu, v, menuInfo)
 }

 override fun onContextItemSelected(item: MenuItem): Boolean {
        when(item.itemId){
            R.id.menu1 -> {
                Toast.makeText(this, "1", Toast.LENGTH_SHORT).show()
            }
            R.id.menu2 -> {
                Toast.makeText(this, "2", Toast.LENGTH_SHORT).show()
            }
        }
        return super.onContextItemSelected(item)
 }

 

댓글