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]