ActionBar
これまでのオプションメニューに変わるものです。
ナビゲーションモードで以下3つがあります。
- Standard Navigation
- List Navigation
- Tab Navigation
1つのActivityで選択できるのは上記モードのうち1つだけです。
Android 3.0以降で使用可能ですが、ここでは下位APIでも使用可能とする為、
support.v7を導入したソース例を記載します。通常のActionBarの書き方と違うので注意して下さい。
※特にmenu,stylesは指定文があります。
※特にmenu,stylesは指定文があります。
Standard Navigation |
List Navigation |
Tab Navigation |
MainActivity.java
public class MainActivity extends ActionBarActivity implements OnClickListener, OnNavigationListener, TabListener{ private ActionBar ab; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //getWindow().requestFeature(Window.FEATURE_ACTION_BAR); setContentView(R.layout.activity_main); Button _button_stand = (Button)findViewById(R.id.button_Standard);//Standardモード _button_stand.setOnClickListener(this); Button _button_list = (Button)findViewById(R.id.button_List);//Listモード _button_list.setOnClickListener(this); Button _button_tab = (Button)findViewById(R.id.button_Tab);//tabモード _button_tab.setOnClickListener(this); ab = getSupportActionBar(); ab.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);//初期画面をStandardで設定 } @Override public boolean onCreateOptionsMenu(Menu menu) { // メニューの要素を追加 getMenuInflater().inflate(R.menu.menu, menu); return true; } @Override public void onClick(View arg0) { // TODO 自動生成されたメソッド・スタブ switch(arg0.getId()){ case R.id.button_Standard: ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE);//appタイトル表示 ab.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);//Standardモード break; case R.id.button_List: SpinnerAdapter _Adapter = ArrayAdapter.createFromResource(this, R.array.action_list, android.R.layout.simple_list_item_1); ab.setListNavigationCallbacks(_Adapter, this); ab.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE);//appタイトル非表示 ab.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);//Listモード break; case R.id.button_Tab: ab.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);//Tabモード ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE);//appタイトル表示 ab.addTab(ab.newTab().setText("Tab_1").setTabListener(this)); ab.addTab(ab.newTab().setText("Tab 2").setTabListener(this)); ab.addTab(ab.newTab().setText("Tab 3").setTabListener(this)); break; } } @Override public boolean onNavigationItemSelected(int arg0, long arg1) {//Listモードのitem選択時アクション // TODO 自動生成されたメソッド・スタブ return false; } //以下onTabReselected,onTabSelected,onTabUnselectedはTabモードで必要 @Override public void onTabReselected(Tab arg0, FragmentTransaction arg1) {//tabが2度目以降に選択された場合に実行 // TODO 自動生成されたメソッド・スタブ } @Override public void onTabSelected(Tab arg0, FragmentTransaction arg1) {//tabが選択された場合に実行 // TODO 自動生成されたメソッド・スタブ } @Override public void onTabUnselected(Tab arg0, FragmentTransaction arg1) {//tabが選択から外れた場合に実行 // TODO 自動生成されたメソッド・スタブ } }
res/layout/activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:gravity="center" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ActionBar3つのモード" android:textAppearance="?android:attr/textAppearanceLarge" /> <Button android:id="@+id/button_Standard" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Standard Navigation" /> <Button android:id="@+id/button_List" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="List Navigation" /> <Button android:id="@+id/button_Tab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Tab Navigation" /> </LinearLayout>
res/menu/menu.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">//※この行必須です。 <item android:icon="@android:drawable/ic_menu_help" android:id="@+id/menu1" app:showAsAction="ifRoom" android:title="test"> </item> <item android:icon="@android:drawable/ic_menu_preferences" android:id="@+id/menu2" app:showAsAction="ifRoom" android:title="@string/menu_settings"> </item> </menu>
res/values/strings.xml
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">HelloWorld</string> <string name="hello_world">Hello world!</string> <string name="menu_settings">Settings</string> <string-array name="action_list"> <item>test1</item> <item>test2</item> <item>test3</item> <item>test4</item> <item>test5</item> </string-array> </resources>
res/values/styles.xml
<resources> //support.v7のActionBarを使用する際は、@style/Theme.AppCompat.Lightか@style/Theme.AppCompatのどちらか必須です。 <style name="AppBaseTheme" parent="@style/Theme.AppCompat.Light">//※この行必須です。 </style> <!-- Application theme. --> <style name="AppTheme" parent="AppBaseTheme"> </style> </resources>
0 件のコメント:
コメントを投稿