Menu を使ってみた

Menu は
android.view.Menu
を使用します

さらに、Activity クラスの
  • public boolean onCreateOptionsMenu(Menu menu)
  • public boolean onPrepareOptionsMenu(Menu menu)
  • public boolean onOptionsItemSelected(MenuItem item)
  • public boolean onMenuOpened(int featureId, Menu menu)
などのメソッドを Override することで使用できます

というわけで、Menu をいじってみた

サンプルプログラム
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MenuTest extends Activity {
  private static final int MENU_ID1 = Menu.FIRST;
  private static final int MENU_ID2 = Menu.FIRST + 1;
  private static final int MENU_ID3 = Menu.FIRST + 2;
  private static final int SUBMENU_ID1 = Menu.FIRST + 21;
  private static final int SUBMENU_ID2 = Menu.FIRST + 22;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main); 
  
    ((Button) findViewById(R.id.Button)).setOnClickListener(
      new OnClickListener() {
        public void onClick(View v) {
          // Menu の表示
          openOptionsMenu();
        }
      }
    );
  }

  // Option Menu が最初に表示される時に1度だけ呼び出される
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    boolean ret = super.onCreateOptionsMenu(menu);

    // Menu にアイテムを追加
    menu.add(Menu.NONE, MENU_ID1, Menu.NONE, "Menu1");
    // Menu に Icon 付きアイテムを追加
    menu.add(Menu.NONE, MENU_ID2, Menu.NONE, "Menu2").setIcon(R.drawable.icon);

    // SubMenu を追加
    SubMenu sMenu = menu.addSubMenu(Menu.NONE, MENU_ID3, 3, "Menu3");
    sMenu.add(Menu.NONE, SUBMENU_ID1, Menu.NONE, "SubMenu1");
    sMenu.add(Menu.NONE, SUBMENU_ID2, Menu.NONE, "SubMenu2");

    // Menu にショートカットキーを設定
    menu.findItem(MENU_ID1).setAlphabeticShortcut('a');
    menu.findItem(MENU_ID2).setAlphabeticShortcut('1');
    menu.findItem(MENU_ID3).setAlphabeticShortcut('s');

    return ret;
  }

  // Option Menu が表示される時の動作
  @Override
  public boolean onPrepareOptionsMenu(Menu menu) {
    return super.onPrepareOptionsMenu(menu);
  }

  // Option Menu のアイテムが選択された時の動作
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    boolean ret = super.onOptionsItemSelected(item);
    // 選ばれたアイテムの ID を取得
    switch(item.getItemId()) {
    case MENU_ID1:   // Menu1
      return true;
    case MENU_ID2:   // Menu2
      return true;
    case SUBMENU_ID1:   // Submenu1
      return true;
    default:
    }
    return ret;
  }

  // Option Menu が開かれた時の動作
  @Override
  public boolean onMenuOpened(int featureId, Menu menu) {
    return super.onMenuOpened(featureId, menu);
  }
}

プログラムを実行すると...


SubMenu は...

こんな感じ!

参考サイト
http://developer.android.com/intl/ja/reference/android/view/Menu.html
http://developer.android.com/intl/ja/reference/android/app/Activity.html

0 件のコメント:

コメントを投稿