【Android Studio】コンテキストメニューの作り方 – Kotlin編

Sara

この記事では コンテキストメニューの作り方を紹介します。

コンテキストメニューとは、ユーザーが画面を長押しすると表示されるメニューです。

以下のようなメニューを作成・表示します。

開発環境

Android StudioChipmunk 2021.2.1
Android EmulatorNexus 4 (API 32)
compileSdk / targetSdk32
minSdk16

プロジェクトについて

ContextMenuSample という名前のプロジェクトを作成して

  • MainActivity.kt
  • activity_main.xml

がある状態で実装していきます。

オプションメニューの作り方

1. レイアウトファイルの作成

Android Studio 画面左側のプロジェクト構造にある res フォルダの上で右クリックして、 New → Android Resource File を選択します。

File name に context_menu.xml と入力、Resource Type は Menu を選択します。

2. アイコンの用意

メニューに表示するアイコンを用意します。

今回は Android Studio から簡単に用意できる Vector アイコンを使います。

ご自身で用意したアイコン画像を使う場合は drawable フォルダに画像を置いてください。

Android Studio 画面の一番左側にある Resource Manager を開きます。

+ ボタンをクリックして Vector Asset を選択します。

Clip Art をクリックします。

phone を検索して OK を押します。

Next を押します。

Finish を押します。

同じ手順で email アイコンも追加します。

3. レイアウトの用意

context_menu.xml を開いて、以下のようにレイアウトを用意します。

id 属性

クリックされた項目を識別できるように id を設定しておきます。

icon 属性

アイコン画像を指定します。(* 低い API ではアイコン画像が表示されない場合があります。)

title 属性

表示名です。

orderInCategory 属性

表示順序を指定することができます。(このサンプルでは使用していません。)

4. activity_main.xml の用意

今回は MainActivity 画面を長押しした時にメニューを表示させたいので、activity_main.xml の親レイアウトに id を用意しておきます。

activity_main.xml を開いて、7行目を追加します。

5. オプションメニューを表示する

MainActivity.kt を開いて15・18~36行目を追加します。

15行目
registerForContextMenu(findViewById(R.id.rootLayout))

先ほど activity_main.xml に用意した id を使って「どのビューを長押しした時にコンテキストメニューを表示するのか」を登録します。

これを書かないとメニューが表示されないのでご注意ください。

18~25行目

onCreateContextMenu メソッドは、メニューを表示する時に呼び出されます。

27~36行目

onContextItemSelected メソッドは、項目が選択されたときに呼ばれます。

このサンプルでは選択された項目のタイトルを Toast 表示していますが、押された項目ごとに処理が変わる場合は28~32行目のように書くことができます。

他にもメニューを閉じた時に呼ばれる onContextMenuClosed メソッドがあります。

6. 完成

以上で完成です。

完成版のコード

Q
context_menu.xml
Q
activity_main.xml
Q
MainActivity.kt
Subscribe
Notify of
guest
6 Comments
古い順
新しい順 人気順
Inline Feedbacks
View all comments
Kohji Shino
Kohji Shino
10 months ago

ご案内ありがとうございます。
ここで、例示されている2つのVectorAsset が、自機環境では選べませんでした。
追加のDowload が可能なのでしょうか?
開発環境は以下です。
Win11 Android Studio Giraffe
よろしくお願いします。
Shino

Kohji Shino
Kohji Shino
9 months ago
Reply to  Sara

ありがとうございます。
Net接続の状態で、貴ページでご案内のように、Selection Icon 画面で、キーワードを[phone]として候補となるVector Asset は、異なった3つでした。
ご案内画面からして、Macと自機のWin環境では同一のVector Asset が現れないのでご案内をお願いしたところです。
図のように、キーワード[email]についても、同一のVector Asset は出現しませんでした。
Shino

2023-09-24_21h23_44.jpg
Kohji Shino
Kohji Shino
9 months ago
Reply to  Sara

ありがとうございました。
図のように、ご案内記述と同じアイコンで表示できるようになりました。
お世話になりました。
Shino

2023-09-25_20h36_38.jpg
ABOUT ME
Sara
書籍やオンライン講座でプログラミングを勉強してフリーランスのプログラマーになりました。
このサイトでは「わかりやすく・シンプル」をモットーに、プログラミングの基礎からアプリ開発まで紹介します。
独学でプログラミングを勉強をしている方、基礎は勉強したけれど次に何をすれば良いか分からない...という方のお役に立てるサイトを目指しています。
主な使用言語:Java / Kotlin / PHP
>> 詳しいプロフィール
>> お問い合わせ
>> 書籍を出版しました!
本格的に学びたい方へ

Code for Fun プログラミング講座

Code for Fun プログラミング講座では、プログラミングの基礎からアプリ開発まで学ぶことができます。

わかりやすく・シンプルをモットーに

  • 同じコードを書けば必ず完成できること
  • 専門用語を使いすぎないこと

を重視しています。

POINT 01

動くコード

プログラミングの文法だけを学んでも、そこから動くアプリを開発をするのは難しいです。

Code for Fun のプログラミング講座では、ゲームやカレンダーなど「アプリとして機能するもの」を作りながらプログラミングを学ぶことができます。

POINT 02

自分のペースで

オンライン講座なので、ご自身のペースで学習を進めて頂けます。

分からないことがあっても、前のレッスンに戻ることができるので安心です。

お申し込みしたその日からからすぐに始めることができます。

POINT 03

個別サポート

プログラミング学習では、エラーが起きることはよくあります。そんな時はお気軽にお問い合わせください!

コメント欄またはメールによるサポートを回数無制限でご利用頂けます。(*講座に関連するご質問のみ対応)

今すぐ無料でお試し

6
0
この記事にコメントするx
記事URLをコピーしました