[Android Studio] オプションメニューを表示する

どうも、tatsuです!

今日は、オプションメニューを表示する方法を説明します。

※この記事で使用しているAndroid Studioのバージョンは2.3.3です。

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

メニューは使いやすさを上げるために必要な要素です。
今回は画面の右上にゴミ箱アイコンと保存アイコンを表示し、クリックでトーストが表示される流れを実装します。

メニューレイアウトの作成

画面左のプロジェクトウィンドウからresフォルダを右クリックして、[New]→[New Resource File]を選択して、次のようなファイルを作成します。

custom_menu.xmlは以下のようにします。

<?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/action_delete"
        android:orderInCategory="1"
        android:icon="@android:drawable/ic_menu_delete"
        android:title="DELETE"
        app:showAsAction="always" />
    <item
        android:id="@+id/action_save"
        android:orderInCategory="2"
        android:icon="@android:drawable/ic_menu_save"
        android:title="SAVE"
        app:showAsAction="always" />
</menu>

MainActivity.java

MainActivity.javaは以下のようにします。

public class MainActivity extends AppCompatActivity {

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

    // オプションメニューを作成する
    public boolean onCreateOptionsMenu(Menu menu){
        // menuにcustom_menuレイアウトを適用
        getMenuInflater().inflate(R.menu.custom_menu, menu);
        // オプションメニュー表示する場合はtrue
        return true;
    }

    // メニュー選択時の処理 今回はトースト表示
    public boolean onOptionsItemSelected(MenuItem menuItem){
        Toast toast;

        // 押されたメニューのIDで処理を振り分ける
        switch (menuItem.getItemId()){
            case R.id.action_delete:
                toast = Toast.makeText(MainActivity.this, "ゴミ箱を選択", Toast.LENGTH_SHORT);
                break;
            default:
                toast = Toast.makeText(MainActivity.this, "保存を選択", Toast.LENGTH_SHORT);
        }
        
        toast.show();
        return true;
    }
}

結果

↓ボタン押下前

↓ゴミ箱アイコン押下後

補足
menuレイアウトに設定した属性の説明は以下です。

  • orderInCategory ・・・ メニューの順番
  • showAsAction ・・・ メニューの表示方法

 
また、showAsActionでは以下の設定値が良く使われます。

  • always ・・・ メニューを常に表示
  • never・・・ メニューを表示しない(メニューがまとまったアイコンが表示され、クリックでメニューが表示されます)
  • ↓showAsAction=”never”

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です