はじめに
AndroidでActionBarにボタンを設置する方法をメモしておきます。
ActionBarに設置したボタンをタップするとメニューが下に出てくるものは調べるとたくさんあったのですがボタンを設置してタップした時に何かしらの処理をするようなコードがなかなか出てこなかったので。
イメージ
このようなボタンを追加していきます。
今回、ボタンイメージはAndroid内蔵の画像イメージを使用します。
リソースファイルの作成
画像の手順に従って新しいメニューのリソースファイルの作成をします。 (AndroidStudio2を使用しています。)
作成する場所はresディレクトリ配下、menuディレクトリの直下に作成します。
ここではmenu_main.xmlのファイル名で作成しました。
作成したリソースファイルに以下のタグを記述します。 ボタンが2つ以上欲しい場合Itemタグを適宜増やしてそれぞれ設定してください。
1 2 3 4 5 6 7 8 | <!--?xml version="1.0" encoding="utf-8"?--> <menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <item android:id="@+id/addButton" android:icon="@android:drawable/ic_input_add" android:title="Add" app:showasaction="always"> </item> </menu> |
ソースコード
1 2 3 4 5 | @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.menu_main, menu); return true; } |
設置するアクティビティでonCreateOptionsMenuメソッドをオーバーライドします。 オーバーライドしたらgetMenuInflaterのinflateメソッドに先ほど作成したメニューのリソース(menu_main)を設定します。
アクティビティにボタンが設置できたら次はそのボタンに処理を追加します。
設置したボタンをタップした際の処理はonOptionsItemSelectedメソッドをオーバーライドして以下のように記述できます。
1 2 3 4 5 6 7 8 9 | @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.addButton: // ボタンをタップした際の処理を記述 break; } return true; } |
Switch文で引数のMenuItemのgetItemIdメソッド調べることでボタンを識別できます。 idはメニューのリソースを作成した時につけたidです。
ボタンを増やしたらcase文を追加していくだけで処理を分岐できます。