使用ツール
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」を画面に設置する。
項目名 内容 備考 id toolbar プログラムから R.id.toolbar として参照される。 layout_width 0dp (match constraint) 親画面と同じ幅にする。 layout_height wrap_content 内容 (文字の高さ) に合わせる。 layout_constraintEnd_toEndOf parent 右端を親画面に合わせる。 layout_constraintStart_toStartOf parent 左端を親画面に合わせる。 layout_constraintTop_toTopOf parent 上端を親画面に合わせる。 background ?attr/colorPrimary 変更なし (標準のまま) minHeight ?attr/actionBarSize 変更なし (標準のまま) theme ?attr/actionBarTheme 変更なし (標準のまま) title サンプルツールバー 好きな文字列を設定する。
(本来はリソースを作成して、そのリソースを参照する)
3. メニューリソースを追加する。
3-1. リソースツリーにメニューディレクトリを追加する。
ツールウィンドウで Android ビューを表示し、リソースディレクトリにメニューディレクトリを追加する。3-2. メニューリソースファイルを追加する。
3-1-1. ツールウィンドウを Android ビューに切り替える。
ツールウィンドウのドロップダウンリストから を選択する。3-1-2. リソースディレクトリ「menu」を追加する。
すでに「app」が表示されていれば、何もしない。
「app」を展開して「res」を表示させたら、これを右クリックし、
New > Android Resource Directory を選択する。
ダイアログ「New Resource Directory」が表示されるので、以下を選択し をクリックする。
Directory name: を変えることにより、複数の menu リソースディレクトリを追加できる
要素名 内容 備考 Directory name: menu R.menu.xxx として参照される。 Resource type: -
(ように見える) が、実際はひとつしか登録できない。
上記 3-1 で追加したメニューディレクトリ「menu」を右クリックし、
New > Menu Resource File を選択する。
ダイアログ「New Resouce File」が表示されるので、以下を記入し をクリックする。
要素名 内容 備考 File name: option_menu R.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 はカテゴリ分けされていない)
各項目に文字列を記入したら必ず Enter キーで確定すること。
項目 内容 備考 id menuItem1 プログラムから R.id.menuItem1 として参照される。 title 項目名 機能に従い、相応しい文字列を記入する。
必要な数だけこれを繰り返す。
5. メニューの表示処理と選択処理を追加。
5-1. MainActivity.java にインフレーターとアイテムの選択時処理を記述する。
クラス MainActivity に以下を記述する
*1クラス Toolbar には下記の 2 種類があります。
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); }
}
import 文を確認し、androidx (新しい API) を有効にします。
✗ android.widget.Toolbarアクションバーに割り当てることができない。 ✓ androidx.appcompat.widget.Toolbar -