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