はじめに
最近シンプルなPopupMenuを実装したのですが、ドキュメントが少ないように感じましたので簡単にまとめておこうと思います。
表示方法
まず、以下のようなmenu.xmlを作成します。
test.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/test1"
android:title="テスト1" />
<item
android:id="@+id/test2"
android:title="テスト2" />
<item
android:id="@+id/test3"
android:title="テスト3" />
<item
android:id="@+id/test4"
android:title="テスト4" />
</menu>
次に、kotlin側でPopupMenuを生成し表示するコードを実装します。
PopupMenu(requireContext(), binding.targetView).apply {
menuInflater.inflate(R.menu.test, menu)
setOnMenuItemClickListener {
// Menuからアイテムを選択された際の処理
return@setOnMenuItemClickListener true
}
show()
}
PopupMenuの第二引数に表示する位置の基準にしたいViewを指定します。
説明は以上になります。
ちなみにmenu.xmlから追加するだけではなく、以下のようにPopupMenuが持つmenuに対してaddしていくことで、xmlを使わずにデータを動的に追加していくことも可能ですね。
val popupMenu = PopupMenu(requireContext(), binding.targetView)
popupMenu.menu.add(Menu.NONE, 0, 0, "テスト")
さいごに
たまに実装要件の上がるPopupMenuですが、簡単に実装ができて意外に便利なので、お困りの方は是非参考にしていただければと思います。