<< Android-Note
アクションバーにメニューを並べる
ActionBar(アクションバー)にはアイコンとタイトルだけでなく、メニューアイコンも並べることが可能です。
メニュー数があまり多くない場合などはアクションバーにメニューアイテムを表示できれば無駄がなくなります。
そこでここではActionBarにメニューを表示する手順をまとめてみました。
メニューを作成する
まずはActivity内のonCreateOptionsMenuメソッドでメニューを作ります。
import com.android.view.Menu; import com.android.view.MenuItem; public class MainActivity extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } //各メニューアイテムのID final int MENU1_ID = 0, MENU2_ID = 1; public boolean onCreateOptionsMenu(Menu menu) { MenuItem item1 = menu.add(0, MENU1_ID, 0, R.string.open); //アイテムを取得 MenuItem item2 = menu.add(0, MENU2_ID, 1, R.string.exit); item1.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); //アクションバーに常に表示する。 item2.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); return super.onCreateOptionsMenu(menu); } }
レイアウトファイルは使わずにメニューを作るので各アイテムのID(menu1_idなど)を直に作っています。
まず、メニューにaddメソッドでmenu1_idなどのidとR.string.menu1などのタイトルを持つアイテムを取得します。0になっているところは無視してかまいません。
そして次にアクションバーにアイテムを表示するためにsetShowAsActionを呼び出しています。このメソッドに「常にアイコンを表示する」ことを表す
選択されたアイテムの取得
どのアイテムがクリックされたかを知るにはActivityクラスのonOptionsItemSelectedメソッドを使います。次がそのソースコードです。
public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ case MENU1_ID: Log.i("メニュー", "「open」がクリックされました。"); return true; case MENU2_ID: Log.i("メニュー", "「exit」がクリックされました。"); return true; default: return super.onOptionsItemSelected(item); } }
このメソッドにはクリックされたアイテムが渡されるのでそのIDに応じた処理をswitch文で実行しています。
以上がアクションバーへのメニューの作成方法です。お疲れ様でした!
関連項目
© Kaz