ActionBarとは?
ロゴ、ボタン、タブなどを簡単に実現できるツールバーです。
ActionBarにメニューを作成する
それでは、上記のキャプチャーにあったように、検索、新規追加メニューを
表示させるやり方を解説していきます。
まず、プロジェクト > app > src > main > res > menuの下に、
適当なファイル名をつけたxmlを作成します。
※既に、新規プロジェクトの作成でactionbar付き
を選択していれば、Activityの名前と対応したXMLファイルがあると
思いますのでそちらを利用します。
icon、title、orderInCategory、ShowAcActionの順に、 説明して行きます。 iconは、その名の通り、メニューのアイコン画像になります。 ここでは、「android:drawable/ic_menu_edit」は、androidのライブラリ に既に用意されているものを使用しています。 自分で用意した画像の場合は、android:はつけずに、 「@drawable/画像ファイル名」となります。 titileは、そのままで、アイコンのタイトルになります。 orderInCategoryは、アイコンが複数ある場合の重みづけとなります。 数字が大きいほうが、優先順位が高くなり先に並びます。 そして、最後のshowAsActionですが、著者は、主に、 3種類のタイプを使い分けています。
showAsAction | 内容 |
never | 直接ActionBarに表示させない |
ifRoom | ActionBarに表示スペースあれば、表示させる |
always | ActionBarに常に表示させる |
それでは、次は、Activity側から、先ほど説明したXMLを用いり表示させます。
また、ボタンのアクションが合った際の組込みも解説していきます。
public class ActionBarSampleActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_action_bar_sample); } /** オプションメニューの作成処理になります。 */ @Override public boolean onCreateOptionsMenu(Menu menu) { // メニューを定義したXMLを読込みます。 getMenuInflater().inflate(R.menu.action_bar_sample, menu); // SearchViewの作成 SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); SearchView searchView = (SearchView) menu.findItem(R.id.actionbar_search).getActionView(); searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); // イベントリスナー処理 SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() { // 検索窓から文字が入力される度に実行されます。(リアルタイム検索) @Override public boolean onQueryTextChange(String searchWord) { // ここに検索処理を記載 return true; } // 検索ボタンもしくは、キーボードでEnterされた際に実行されます。 @Override public boolean onQueryTextSubmit(String searchWord) { // 仕様的に、リアルタイムな検索では、十分ではないと判断する際は、ここいも検索処理を記載 return true; } }; // イベントリスナーをセットします。 searchView.setOnQueryTextListener(queryTextListener); return true; } /** メニューのアイテムが選択された際の処理です。 */ @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); // 新規ボタン追加ボタンがタップされた処理 if (id == R.id.actionbar_add) { // ここに具体的な処理を記載 // 例えば、intentで別Activityに遷移など // 以下は、仮の処理 Toast.makeText(this, "The new button was pushed", Toast.LENGTH_LONG); return true; } return super.onOptionsItemSelected(item); } }
メニューの追加メソッドは、「onCreateOptionsMenu」になり、
メニューをタップされた場合に動作するメソッドは、「onOptionsItemSelected」
になります。
以上が、ActionBarメニュー作成の基本的な使い方でした。
その他にも、ActionBarには、タブなどを表示できる機能が含まれていますが、
こちらは、後ほど、解説していく予定です。
また、今回、解説したActionBarのサンプルは、以下からダウンロードできます。
[wpdm_file id=3]