1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Android】PopupMenuの表示方法

Posted at

はじめに 

最近シンプルな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ですが、簡単に実装ができて意外に便利なので、お困りの方は是非参考にしていただければと思います。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?