Android Application

Kotlin 메뉴(Menu) : 컨텍스트 메뉴(ContextMenu)

작성자 임베디드코리아 작성일23-11-16 11:51 조회1,243회 댓글0건

첨부파일

Kotlin 메뉴(Menu) : 컨텍스트 메뉴(ContextMenu)
-------------------------------------------------------------------------------------
      activity_main.xml
-------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_menu1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="context menu" />
</LinearLayout>

------------------------------------------------------------------------------------
    MainActivity.kt
------------------------------------------------------------------------------------
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
      // setContentView(R.layout.activity_main)

        val binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)
        registerForContextMenu(binding.btnMenu1) // 컨텍스트 메뉴에 등록

    }

    //    컨텍스트 메뉴로 등록한 view 롱클릭 시 호출되는 메소드
    override fun onCreateContextMenu(
        menu: ContextMenu?,
        v: View?,
        menuInfo: ContextMenu.ContextMenuInfo?
    ) {
        super.onCreateContextMenu(menu, v, menuInfo)
        when (v?.id) { // 여러 버튼을 등록했을 경우 뷰 아이디에 따라 메뉴 inflate
            R.id.btn_menu1 -> menuInflater.inflate(R.menu.context_menu, menu)
        }
    }

    //    컨텍스트 메뉴 아이템 선택 시 호출되는 메소드
    override fun onContextItemSelected(item: MenuItem): Boolean {
        when (item.itemId) {
            R.id.Context01 -> Toast.makeText(this, "첫번째 아이템 클릭함", Toast.LENGTH_LONG).show()
            R.id.Context02 -> Toast.makeText(this, "두번째 아이템 클릭함", Toast.LENGTH_LONG).show()
            else -> Toast.makeText(this, item.title, Toast.LENGTH_LONG).show()
        }

        return super.onContextItemSelected(item)
    }

}

-------------------------------------------------------------------------------------
*****  context_menu.xml  * ******
 menu 폴더 만들기  -->  New ---> Android Resource Directory
 context_menu.xml 만들기  -->  New ---> Menu Resource File
-------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/Context01"
        android:title="Context Menu 1" />
    <item
        android:id="@+id/Context02"
        android:title="Context Menu 2" />
    <item
        android:id="@+id/Context03"
        android:title="Context Menu 3" />
    <item
        android:id="@+id/Context04"
        android:title="Context Menu 4" />
</menu>