こんにちは、KID.Aです。
今回は、少し古い情報ですが、アップさせていただきます。
Android support Library v7からActionBarActivityが登場しました。
今までActionBarを2系バージョンで使用する場合は、ActionBarSherlockなどのオープンソースを使用していたと思いますがActionBarActivityのおかげで、オープンソースを使用しなくても、2系バージョンでもActionBarが使えるようになりました。
ActionBarでできること
実装
使用方法は特別難しくありません。
すでに最近のEclipseではAndroidプロジェクトを作成すると、デフォルトでActivityではなく、ActionBarActivityで作成されます。
通常は、以下の画面でテーマにAction BarをいれるとActionBarActivityが作成されます。
以下は、ActivityからActionBarActivityに変更する際の手順です。
1. Activityの代わりにActoionBarActivityを継承させてください。
ActionBarActivityはFragmentActivtyを継承しているため、Fragmentにも対応できます。
public class MainActivity extends ActionBarActivity {
2. Theme.AppCompat.Lightを追加します。
<style name="AppTheme" parent="Theme.AppCompat.Light"> </style>
3. 指定したテーマをapplicationタグに追加します。
<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >
これで完了です。
メニューの実装
Eclipseで作成する際にはナビゲーション・タイプのどれを選んでもメニューはついてきます。今回はナビゲーション・タイプをNoneにします。
メニューの追加部分をみてみます。
1. 以下でメニューを追加します。
@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.main, menu); return true; }
ドロップリストの実装
Eclipseでデフォルトでドロップリストを作成する際にはナビゲーション・タイプをAction Bar Spinnerにします。
ドロップリストの追加部分をみてみます
1. Actionを取得してモードを設定します。
final ActionBar actionBar = getSupportActionBar(); actionBar.setDisplayShowTitleEnabled(false); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); actionBar.setListNavigationCallbacks( new ArrayAdapter<String>( actionBar.getThemedContext(), android.R.layout.simple_list_item_1, android.R.id.text1, new String[] { "選択1", "選択2", "選択3", }), this);
2. リスナーを追加します。
public class MainActivity extends ActionBarActivity implements ActionBar.OnNavigationListener {
3. 選択された際の挙動を追加します。
@Override public boolean onNavigationItemSelected(int position, long id) { return true; }
タブの実装
Eclipseでデフォルトでドロップリストを作成する際にはナビゲーション・タイプをAction Bar Tabsにします。
タブの追加部分をみてみます
1. Actionを取得してモードを設定します。
final ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); actionBar.addTab( actionBar.newTab() .setText("タイトル") .setTabListener(this));
2. リスナーを追加します。
public class MainActivity extends ActionBarActivity implements ActionBar.TabListener {
3. 選択された際の挙動を追加します。
@Override public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { } @Override public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { }
その他
また、ActionBarDrawerToggleを使用すれば、スワイプするメニューも作成できます。
Eclipseでデフォルトでスワイプするメニューを作成する際にはナビゲーション・タイプをNavigation Drawerにします。
・Navigation Drawerでできた画面になります。
現在、Google Developerの情報を見る限り、シェアの8割が4.x系になります。
そのため、新規で開発する際には4未満はサポート対象の悩みどころになってきますが、2割は大きいという考えもあるので、入れる場合はなるべくなら4系と同じようなデザインになるように、ActionBarActivityで設定ボタンやタブなどは合わせるようにしましょう。