안드로이드 개발자의 창고
[34일차 Android] Popup Menu 본문
출처 : 안드로이드 앱스쿨 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 |