Archives
Recent Posts
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
Today
Total
관리 메뉴

안드로이드 개발자의 창고

[34일차 Android] Popup Menu 본문

Computer/Android

[34일차 Android] Popup Menu

Wise-99 2023. 6. 17. 18:03

 

 

 

출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT

 

 

 

📖 Popup Menu

  • 개발자가 원할 때 원하는 곳에 띄울 수 있는 메뉴

주요 프로퍼티

프로퍼티 설명
menu Popup Menu의 메뉴를 관리하는 객체를 반환. 이를 통해 메뉴를 구성

주요 리스너

리스너 설명
OnMenuItemClickListener 메뉴의 항목을 눌렀을 때 반응하는 리스너

 

 

 

예제 코드

popup_menu.xml

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

    <item
        android:id="@+id/popup1"
        android:title="팝업 메뉴1" />
    <item
        android:id="@+id/popup2"
        android:title="팝업 메뉴2" />
    <item
        android:id="@+id/popup3"
        android:title="팝업 메뉴3" />
</menu>

 

 

 

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:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />

    <TextView
        android:id="@+id/textView2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="TextView"
        android:textAppearance="@style/TextAppearance.AppCompat.Large" />

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Button" />

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</LinearLayout>

 

 

 

MainActivity.kt

class MainActivity : AppCompatActivity() {

    lateinit var activityMainBinding: ActivityMainBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)

        activityMainBinding = ActivityMainBinding.inflate(layoutInflater)
        setContentView(activityMainBinding.root)

        activityMainBinding.run {

            button.run {
                setOnClickListener {
                    // 팝업 메뉴 객체를 생성
                    val pop = PopupMenu(this@MainActivity, textView)

                    // 메뉴를 구성
                    menuInflater.inflate(R.menu.popup_menu, pop.menu)

                    // 팝업 메뉴를 띄운다.
                    pop.show()

                    // 팝업 메뉴를 눌렀을 때 동작하는 리스너
                    pop.setOnMenuItemClickListener {
                        when(it.itemId){
                            R.id.popup1 -> textView.text = "팝업 메뉴1을 선택했습니다."
                            R.id.popup2 -> textView.text = "팝업 메뉴2를 선택했습니다."
                            R.id.popup3 -> textView.text = "팝업 메뉴3을 선택했습니다."
                        }

                        // true, false 큰 차이가 없음
                        false
                    }
                }
            }
        }
    }
}

 

 

 

결과

'Computer > Android' 카테고리의 다른 글

[34일차 Android] Activity 실행하기  (0) 2023.06.17
[34일차 Android] Activity  (0) 2023.06.17
[34일차 Android] Context Menu  (1) 2023.06.17
[34일차 Android] Option Menu  (0) 2023.06.17
[33일차 Android] Permission  (0) 2023.06.17