ActionBarのViewControlは、アプリ内のViewを切り替えるUIとして使われます。
ViewControlは3つのActionModeを持っています。
- Normal
- Tab
- List
今回はListModeについてです。
●ActionMode:ListMode
ActionModeをListModeに設定すると、ViewControl部分にドロップダウンメニューが表示されます。
・サンプルコード
ActionBar actBar = getActionBar(); // リストに表示するアダプタを登録 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[] { "List Item 1", "List Item 2" }); // Navigationコールバックを登録する actBar.setListNavigationCallbacks(adapter, new ActionBar.OnNavigationListener() { @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { return false; } }); // 最後にNavigationModeをListModeに設定 actBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
しかし、これだとアプリのタイトル文字列とケンカして見づらいです。
ListModeを使う場合、アプリアイコンで十分アイデンティティが確保されていれば、
アプリタイトルを非表示としたほうが良い場合がありそうです。
・アプリタイトルを表示しないサンプルコード
ActionBar actBar = getActionBar(); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, new String[] { "List Item 1", "List Item 2" }); actBar.setListNavigationCallbacks(adapter, new ActionBar.OnNavigationListener() { @Override public boolean onNavigationItemSelected(int itemPosition, long itemId) { return false; } }); // アプリタイトルを非表示に設定 actBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); actBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
●ActionBarを上下に分割して表示
ListModeを採用すると、どうしてもActionBarの領域が狭くなりがちです。ここにActionボタンも併用すると窮屈なUIになってしまいます。
その場合、ActionBarを画面上下に分割するsplitActionBarWhenNarrowの利用を考えます。
実装方法はいたってシンプル。
AndroidManifest.xmlのActivity要素にandroid:uiOptions="splitActionBarWhenNarrow"
を追加します。
・サンプルコード
<activity android:name=".MainActivity" android:label="@string/title_activity_main" android:uiOptions="splitActionBarWhenNarrow" >
ただし、画面横幅が一定サイズを超える場合はsplitActionBarWhenNarrowが有効とならな
い場合があります。
⇒http://yuki312.blogspot.jp/2012/07/androidsplitactionbarwhennarrow.html
以上です。