Androidのコンテキストメニュー、オプションメニュー、サブメニュー


メニューOptionMenu ContextMenu SubMenu;1、オプションメニュー:OptionMenu注意:一般的なオプションメニュー:最大2行、各行3つのメニュー項目があり、6つ余ったときやmoreが現れたら、クリックして表示する.作成:onCreateOptionsMenu()メソッドを書き換える.イベント:onOptionsItemSelected()を書き換えます.方法2、コンテキストメニュー:ContextMenu説明:オプションメニューはActivityにサービスし、コンテキストメニューはあるViewオブジェクトに登録する.ヒント:ContextMenuのタイトルとアイコンを指定できますが、メニューオプションにはアイコンを添付できません.作成:onCreateContextMenu()を書き換えます.イベント:onContextItemSelected()を書き換えます.登録:registerForContextMenu()3、サブメニュー:SubMenuの説明:サブメニューはサブメニューをネストできない.すなわちandroidのメニューは2階しかない.ヒント:サブメニュー項目は表示アイコンの作成をサポートしていません:addSubMenu()を使用します;サブメニューのあるメニュー項目を追加
事例:コードで各種メニューを実現
package com.example.menu;

import android.app.Activity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.Toast;

public class MainActivity extends Activity {

	private RelativeLayout myLayout; //       

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		myLayout = (RelativeLayout) findViewById(R.id.myLayout); //     
		registerForContextMenu(myLayout); //        

	}

	/***********************************      Start OptionMenu ************************************************/

	//        
	public boolean onCreateOptionsMenu(Menu menu) {

		/*
		 *     : 1:    2:   ID ,     3:          4:        
		 */
		MenuItem addMenuItem = menu.add(1, 0, 0, "  "); //      
		addMenuItem.setIcon(R.drawable.icon_download2); //     
		MenuItem uppMenuItem = menu.add(1, 1, 1, "  ");
		uppMenuItem.setIcon(R.drawable.icon_download2);

		/*       */
		SubMenu delSubMenu = menu.addSubMenu(1, 1, 1, "  "); //  menu     
		delSubMenu.setHeaderIcon(R.drawable.icon_download2); //           
		delSubMenu.setHeaderTitle("  ");
		delSubMenu.setIcon(R.drawable.icon_download2); //         
		delSubMenu.add(2, 11, 11, "  "); //           
		delSubMenu.add(2, 12, 12, "  ");

		SubMenu showSubMenu = menu.addSubMenu(1, 2, 2, "  "); //      
		showSubMenu.setIcon(R.drawable.icon_download2); //        
		showSubMenu.setHeaderIcon(R.drawable.icon_download2); //        
		showSubMenu.setHeaderTitle("  "); //        
		showSubMenu.add(2, 21, 21, "  ");
		showSubMenu.add(2, 21, 22, "  ");

		return true;
	}

	//         
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case 0:
			Toast.makeText(MainActivity.this, "   " + item.getTitle() + "  ",
					Toast.LENGTH_LONG).show();
			break;

		case 1:
			Toast.makeText(MainActivity.this, "   " + item.getTitle() + "  ",
					Toast.LENGTH_LONG).show();
			break;
		default:
			Toast.makeText(MainActivity.this, "   " + item.getTitle() + "  ",
					Toast.LENGTH_LONG).show();
			break;
		}
		return super.onOptionsItemSelected(item);
	}

	/**
	 *              : 1、back       2、menu        3、         
	 */
	public void onOptionsMenuClosed(Menu menu) {
		super.onOptionsMenuClosed(menu);
		Toast.makeText(MainActivity.this, "        ...", Toast.LENGTH_LONG)
				.show();
	}

	/**
	 *           
	 * 
	 * @return false :    menu        ,onCreateOptionsMenu       
	 */
	public boolean onPrepareOptionsMenu(Menu menu) {
		Toast.makeText(MainActivity.this, "onPrepaareOptionsMenu()     ...",
				Toast.LENGTH_LONG).show();
		return super.onPrepareOptionsMenu(menu);
	}

	/***************************************** End OptionMenu **************************************************************/

	/*****************************************       Start ContextMenu **************************************************/

	//        
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo) {
		super.onCreateContextMenu(menu, v, menuInfo);
		menu.setHeaderIcon(R.drawable.icon_download2); //             
		menu.setHeaderTitle("      "); //           
		MenuItem oneMenuItem = menu.add(Menu.NONE, 0, 0, "  "); //        
		MenuItem twoMenuItem = menu.add(Menu.NONE, 1, 1, "  "); //        

	}

	//          
	public boolean onContextItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case 0:
			Toast.makeText(MainActivity.this, "   " + item.getTitle() + "  ",
					Toast.LENGTH_LONG).show();
			myLayout.setBackgroundColor(getResources().getColor(R.color.back)); //     
			break;

		case 1:
			Toast.makeText(MainActivity.this, "   " + item.getTitle() + "  ",
					Toast.LENGTH_LONG).show();
			myLayout.setBackgroundColor(getResources().getColor(R.color.red));//     
			break;
		}
		return super.onContextItemSelected(item);
	}

	//           ..
	public void onContextMenuClosed(Menu menu) {
		super.onContextMenuClosed(menu);
		Toast.makeText(MainActivity.this, "       ...", Toast.LENGTH_LONG)
				.show();
	}

	/***************************************** End ContextMenu ***********************************************************/

	/*****************************************     Start SubMenu ********************************************************/
	//                ,              ....
	/***************************************** End SubMenu ****************************************************************/

}