オプションメニューの追加
〜 Android Studio の使い方 4 〜
2023-04-20 作成 福島
TOP > androidstudio > optionmenu

使用ツール

    Android Studio Flamingo | 2022.2.1 Patch 2  


1. オプションメニューの無いプロジェクトを作成する。

オプションメニューを追加するので、オプションメニューを含んでいないプロジェクトを作成する。
「Empty Activity」「Empty Views Activity」等のプロジェクトが対象。
「No Activity」でも構わないが、Default Activity の追加が必要になるので、ここでは割愛する。(選択しない)


2. ツールバーを追加

オプションメニューのアイコン「︙」を配置するためのメニューバー (アプリバー / アクションバー とも呼ぶ) を作成する。

2-1. メインアクティビティにツールバーを配置する。
activity_main.xml をデザインモードで表示し、「Palette」の「Containers」から「Toolbar」を画面に設置する。
項目名内容備考
idtoolbarプログラムから R.id.toolbar として参照される。
layout_width0dp (match constraint)親画面と同じ幅にする。
layout_heightwrap_content内容 (文字の高さ) に合わせる。
layout_constraintEnd_toEndOfparent右端を親画面に合わせる。
layout_constraintStart_toStartOfparent左端を親画面に合わせる。
layout_constraintTop_toTopOfparent上端を親画面に合わせる。
background?attr/colorPrimary変更なし (標準のまま)
minHeight?attr/actionBarSize変更なし (標準のまま)
theme?attr/actionBarTheme変更なし (標準のまま)
titleサンプルツールバー好きな文字列を設定する。
(本来はリソースを作成して、そのリソースを参照する)


3. メニューリソースを追加する。

3-1. リソースツリーにメニューディレクトリを追加する。
ツールウィンドウで Android ビューを表示し、リソースディレクトリにメニューディレクトリを追加する。

3-1-1. ツールウィンドウを Android ビューに切り替える。
ツールウィンドウのドロップダウンリストから を選択する。
すでに「app」が表示されていれば、何もしない。
3-1-2. リソースディレクトリ「menu」を追加する。
「app」を展開して「res」を表示させたら、これを右クリックし、
New > Android Resource Directory を選択する。

ダイアログ「New Resource Directory」が表示されるので、以下を選択し をクリックする。
要素名内容備考
Directory name:menuR.menu.xxx として参照される。
Resource type:-
Directory name: を変えることにより、複数の menu リソースディレクトリを追加できる
(ように見える) が、実際はひとつしか登録できない
3-2. メニューリソースファイルを追加する。
上記 3-1 で追加したメニューディレクトリ「menu」を右クリックし、
New > Menu Resource File を選択する。

ダイアログ「New Resouce File」が表示されるので、以下を記入し をクリックする。
要素名内容備考
File name:option_menuR.menu.option_menu として参照される。
(Android > app > res > menu > option_menu.xml)
Source set:main src/main/res-
Directory name:menu-


4. メニューにアイテムを追加する。

メニューリソースにアイテムを追加する。

4-1. 上記 3 で追加したメニューリソースデザインモードで表示する。(option_menu.xml)

4-2. アイテムを追加し、タイトルを記入する。
「Palette」の直下にある「Menu Item」をドラッグし、画面に貼り付ける。(どこに貼っても自動的に「menu」の下に配置される)
(メニューリソースの Palette はカテゴリ分けされていない)
項目内容備考
idmenuItem1プログラムから R.id.menuItem1 として参照される。
title項目名機能に従い、相応しい文字列を記入する。
各項目に文字列を記入したら必ず Enter キーで確定すること。

必要な数だけこれを繰り返す。


5. メニューの表示処理と選択処理を追加。

5-1. MainActivity.java にインフレーターとアイテムの選択時処理を記述する。
クラス MainActivity に以下を記述する
public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


// ツールバーをアクションバーとして設定する*1 Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar);
}
// オプションメニューの作成 @Override public boolean onCreateOptionsMenu(Menu menu) { // メニューに option_menu を紐付ける getMenuInflater().inflate(R.menu.option_menu, menu); return true; } // メニューのアイテムが選択されたときの処理 @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); String title = (String) item.getTitle(); if(itemId == R.id.menuItem1) { // ← switch 文は使えない Toast.makeText(this, title + " が選択されました", Toast.LENGTH_LONG).show(); return true; } return super.onOptionsItemSelected(item); }
}
*1クラス Toolbar には下記の 2 種類があります。
import 文を確認し、androidx (新しい API) を有効にします。
android.widget.Toolbarアクションバーに割り当てることができない。
androidx.appcompat.widget.Toolbar-