2013年12月21日

ActionBarActivityとは

ActionBarActivity

ActionBarはandroid.3.0以降から可能なものですが、下位APIでも使用可能とする為、

support.v7ActionBarを使用するときに必要なものです。

support.v7ActionBarを使用するには、以下決まりごとがあります。
  1. ActionBarActivityをextendsする。
  2. styles.xmlのstyle@style/Theme.AppCompat.Light 又は@style/Theme.AppCompatを設定する。

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 件のコメント:

コメントを投稿