【Android】Actionbarの基本的な利用方法
おはようございます。
AndroidでActionbarを使うときの基本的なプログラミングについてメモしておきたいと思います。
Actionbarの追加と除去
- 追加はminSdkVersionがAPI Level 11以上になっていれば自動で追加される
- Actionbarをジョコするときは、ManifestのActivityタグのテーマを Theme.Holo.NoActionbar にセットする。以下はその例
<activity android:theme="@android:style/Theme.Holo.NoActionBar">
- また、実行時でも隠す処理と表示する処理を動的に実行できる
Actionbar actionbar = getActionBar(); actionBar.hide(); actionBar.show();
アイテムの追加
- res/menu の対応するXMLのitemタグ書き込む(統一して一つのファイルにしても良い)。以下例
<item android:id="@+id/menu_upload" android:orderInCategory="2" android:title="@string/menu_upload" android:showAsAction="ifRoom|withText" android:icon="@android:drawable/ic_menu_camera" /> <item android:id="@+id/menu_settings" android:orderInCategory="1" android:title="@string/menu_settings" android:showAsAction="ifRoom|withText" android:icon="@android:drawable/ic_menu_manage" />
値 | 説明 |
---|---|
ifRoom | Actionbarに領域がある場合は表示 |
withText | テキストとアイコンの両方を表示(領域がある場合は) |
never | Actionbarに表示しない |
always | 常に表示 |
collapseActionView | action viewを関連付けることで折り畳めるメニューを表示(Level 14から) |
- res/values/strings.xml に上記で定義したStringを書き込む。以下例
<string name="menu_upload">Upload</string>
注意
- 右側にオプションメニュー(縦に3つの点がついたやつ)は、表示領域に表示しきれなくなったら自動で生成されます。ただし、メニューボタンがある端末はオプションメニューは生成されず、強制的にメニューボタンでの表示となります。
作成したActionbarを表示
以下の関数が自動生成されていると思います。表示するのはこれだけで構いません。
@Override public boolean onCreateOptionsMenu(Menu menu) { // menu/activity_main.xmlからメニューを作成 getMenuInflater().inflate(R.menu.activity_main, menu); return true; }
なお、ホーム画面となる画面以外では、Actionbarの左上にあるホームアイコンに矢印を出現させることになると思いますが、その方法は各ActivityのonCreate(アクティビティの生成のとこ)で以下のコードを書くだけです。
getActionBar().setDisplayHomeAsUpEnabled(true);
また、Actionbarのタイトルを変更したい場合も、onCreate に以下のコードを書くだけです。
getActionBer().setTitle(R.string.app_name);
メニューが選択されたときの処理
ここではActionbarのHomeアイコンを合わせた各メニューが選択されたときの処理を書きたいと思います。
Homeアイコンを押したときはHome画面に戻るようにしています。
@Override public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()){ // if使うとエラー(itemがInt形式なため) case android.R.id.home: // アプリアイコン(ホームアイコン)を押した時の処理 Intent intent = new Intent(this, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); break; case R.id.menu_upload: // アップロードボタンが押された時 break; case R.id.menu_settings: // 設定ボタンを押した時 Toast.makeText(this, "Setting", Toast.LENGTH_SHORT).show(); break; } return true; }
以上です。
Actionbarにタブを追加したり検索機能を追加したりするのもあるのですが、それはまた今度書きたいと思います。
それでは。