Actionbarについて

ActionBarとは?

ロゴ、ボタン、タブなどを簡単に実現できるツールバーです。

actionbar-01

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]

ABOUTこの記事をかいた人

hundredappsの管理人であり、ソフトウェア開発者です。 開発したソフトウェアで、世の中の不便を1つでも改善できたらと思います。