Honeycombチュートリアル その2

オプションメニューを作る

完成図

手順

  1. オプションメニュー用の独自テーマを作成する
    1. attrs.xmlを作成する
  2. メニューレイアウトの作成
    1. main_menu.xml
  3. Activtiyの修正

Create Attrebutes

====================
valuesフォルダいかにattrs.xmlファイルを作成する

attrs.xml

                  • -
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <declare-styleable name="AppTheme">
            <attr name="menuIconCamera" format="reference" />
            <attr name="menuIconToggle" format="reference" />
            <attr name="menuIconShare" format="reference" />
        </declare-styleable> 
    </resources>

Create Menu Layout

========================
create a menu folder under res folder.
and create main_menu.xml

main_menu.xml
                                        • -
    <?xml version="1.0" encoding="utf-8"?>
    <menu
      xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:showAsAction="ifRoom" android:icon="?attr/menuIconCamera" android:title="Camera" android:id="@+id/camera"></item>
        <item android:showAsAction="ifRoom|withText" android:icon="?attr/menuIconToggle" android:title="Toggle Titles" android:id="@+id/toggleTitles"></item>
        <item android:title="Day/Night" android:id="@+id/toggleTheme" android:showAsAction="never"></item>
        <item android:showAsAction="never" android:title="Show a dialog" android:id="@+id/showDialog"></item>
        <item android:showAsAction="never" android:title="Show a basic nitification" android:id="@+id/showStandardNotification"></item>
        <item android:showAsAction="never" android:title="Show a custom notification" android:id="@+id/showCustomNotification"></item>
        
    </menu>

Activityの修正

=================

  • 以下のメソッドをオーバライドする
    • onCreateOptionsMenu
    • onOptionsItemSelected
MainActivity.java
                                    • -
	package com.hidecheck.honeycomic;
	
	import android.app.ActionBar;
	import android.app.ActionBar.Tab;
	import android.app.Activity;
	import android.app.FragmentTransaction;
	import android.os.Bundle;
	import android.view.Menu;
	import android.view.MenuInflater;
	import android.view.MenuItem;
	import android.view.View;
	
	public class MainActivity extends Activity implements ActionBar.TabListener{
		
		private View actionvBarView;
		
	    /** Called when the activity is first created. */
	    @Override
	    public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        setContentView(R.layout.main);
	
	        Directory.initializeDirectory();
	        
	        //Create ActionBar
	        ActionBar bar = getActionBar();
	        
	        
	        //TODO add action item and detail lator
	        for(int i = 0; i < Directory.getmCategoryCount(); i++){
	        	bar.addTab(bar.newTab().setText(Directory.getCategories(i).getName()).setTabListener(this));
	        }
	        
	        // bar customizition.
	        actionvBarView = getLayoutInflater().inflate(R.layout.main, null);
	        bar.setCustomView(actionvBarView);
	        bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM | ActionBar.DISPLAY_USE_LOGO);
	        bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
	        bar.setDisplayShowHomeEnabled(true);
	    }
	
		@Override
		public void onTabReselected(Tab tab, FragmentTransaction ft) {
			
		}
	
		@Override
		public void onTabSelected(Tab tab, FragmentTransaction ft) {
			
		}
	
		@Override
		public void onTabUnselected(Tab tab, FragmentTransaction ft) {
			
		}
		
		@Override
		public boolean onCreateOptionsMenu(Menu menu) {
			MenuInflater inflater = getMenuInflater();
			inflater.inflate(R.menu.main_menu, menu);
			return true;
		}
	
		@Override
		public boolean onOptionsItemSelected(MenuItem item) {
			return super.onOptionsItemSelected(item);
		}
	
	}
実行結果
                            • -