Android Application

Kotlin 메뉴(Menu) : 팝업 메뉴

작성자 임베디드코리아 작성일23-09-25 00:33 조회1,959회 댓글0건

첨부파일

------------------------------------------------------------------------------------
      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="pop up menu" />

</LinearLayout>

------------------------------------------------------------------------------------
 ***    menu/popup_menu.xml
-------------------------------------------------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/PopUP01"
        android:title="Pop Up Menu 1" />
    <item
        android:id="@+id/PopUP02"
        android:title="Pop Up Menu 2" />
    <item
        android:id="@+id/PopUP03"
        android:title="Pop Up Menu 3" />
</menu>
------------------------------------------------------------------------------------
    MainActivity.kt
------------------------------------------------------------------------------------
class MainActivity : AppCompatActivity(), PopupMenu.OnMenuItemClickListener {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        // setContentView(R.layout.activity_main)

        val binding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(binding.root)

        binding.btnMenu1.setOnClickListener { showPopup(binding.btnMenu1) }

    }

    //    팝업 메뉴 보여주는 커스텀 메소드
    private fun showPopup(v: View) {
        val popup = PopupMenu(this, v) // PopupMenu 객체 선언
        popup.menuInflater.inflate(R.menu.popup_menu, popup.menu) // 메뉴 레이아웃 inflate
        popup.setOnMenuItemClickListener(this) // 메뉴 아이템 클릭 리스너 달아주기
        popup.show() // 팝업 보여주기
    }

    // 팝업 메뉴 아이템 클릭 시 실행되는 메소드
    override fun onMenuItemClick(item: MenuItem?): Boolean {
        when (item?.itemId) { // 메뉴 아이템에 따라 동작 다르게 하기
            R.id.PopUP01 -> Toast.makeText(this, "첫번째 팝업 메뉴 클릭", Toast.LENGTH_LONG).show()
            R.id.PopUP02-> Toast.makeText(this, "두번째 팝업 메뉴 클릭", Toast.LENGTH_LONG).show()
            R.id.PopUP03 -> Toast.makeText(this, item.title, Toast.LENGTH_LONG).show()
        }

        return item != null // 아이템이 null이 아닌 경우 true, null인 경우 false 리턴
    }
}