menu 分类:
一、方法介绍:
public booleanonCreateOptionsMenu(Menu menu):使用此方法调用OptionsMenu 。
public booleanonOptionsItemSelected(MenuItem item):选中菜单项后发生的动作。
public voidonOptionsMenuClosed(Menu menu):菜单关闭后发生的动作。
public booleanonPrepareOptionsMenu(Menu menu):选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。
public booleanonMenuOpened(int featureId, Menu menu):单打开后发生的动作。
二、默认样式
默认样式是在屏幕底部弹出一个菜单,这个菜单我们就叫他选项菜单OptionsMenu,一般情况下,选项菜单最多显示2排每排3个菜单项,这些菜单项有文字有图标,也被称作Icon Menus,如果多于6项,从第六项开始会被隐藏,在第六项会出现一个More里,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded Menus。下面介绍。
1.重载onCreateOptionsMenu(Menu menu)方法	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		// Inflate the menu; this adds items to the action bar if it is present.
		//getMenuInflater().inflate(R.menu.main, menu);
		menu.add(0,1,1,"设置").setIcon(R.drawable.setting);
		menu.add(0,3,3,"设置").setIcon(R.drawable.setting);
		menu.add(0,2,2,"下载").setIcon(R.drawable.download);
 
	}4.2上的optionsMenu是放到actionbar上面了,必须要在xml文件中设置showAsAction="always"活着showAsAction="ifRoom"才能在actionbar上显示。只有在actionBar上显示的菜单,才会有图标。要在代码中设置的话,menu.findItem(id).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
	@Override
	public boolean onOptionsItemSelected(MenuItem item)
	{
		// TODO Auto-generated method stub
		if (item.getGroupId() == 0 &&item.getItemId() == 1)
		{
			Intent intent = new Intent(this, SecondActivity.class);
			startActivity(intent);
		}
		else
		{
			Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();
		}
		return super.onOptionsItemSelected(item);
	}1、重载Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜单项MenuItem
	@Override
	public void onCreateContextMenu(ContextMenu menu, View v,
			ContextMenuInfo menuInfo)
	{
		  menu.add(0, 1, 0, "红色背景");  
		  menu.add(0, 2, 0, "绿色背景");  
		  menu.add(1, 3, 0, "白色背景");  
		// TODO Auto-generated method stub
		super.onCreateContextMenu(menu, v, menuInfo);
	}2、重载onContextItemSelected()方法,响应菜单单击事件
	@Override
	public boolean onContextItemSelected(MenuItem item)
	{
		// TODO Auto-generated method stub
		  switch(item.getItemId()) {  
			  case 1:  
				  myText.setBackgroundColor(Color.RED);  
			   break;  
			  case 2:  
				  myText.setBackgroundColor(Color.GREEN);  
			   break;  
			  case 3:  
				  myText.setBackgroundColor(Color.WHITE);  
			   break;  
			  } 
		return true;
	}3、重载registerForContextMenu()方法,为视图注册上下文菜单
    private TextView myText;
	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		myText = (TextView)findViewById(R.id.mytext);
		registerForContextMenu(myText);  
	}子菜单(SubMenu)创建子菜单的方法
1、重载Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单项
2、调用SubMenu的add()饭饭,添加子菜单项
	@Override
	public boolean onCreateOptionsMenu(Menu menu)
	{
		// Inflate the menu; this adds items to the action bar if it is present.
		SubMenu subMenu = menu.addSubMenu(0, 4, 4, "登录/注册");
		subMenu.add(1, 1, 1, "登录");
		subMenu.add(1, 2, 2, "注册");
		return true;
	}
3、重载onOptionsItemSelected(MenuItem item)方法为捕捉菜单项事件
这个方法有一个MenuItem参数,可以使用其getTitle和getItemId方法来判断单击的是哪个菜单项	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// TODO Auto-generated method stub
		if(item.getTitle().equals("登录"))
		{
			Log.e("action:","点击了 注册/登录");
		}
		return super.onOptionsItemSelected(item);
	}
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/action_edit"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="edit"/>
        <item
        android:id="@+id/action_share"
        android:orderInCategory="100"
        android:showAsAction="never"
        android:title="popup"/>
 
</menu>	public void showPopuMenu(View v)
	{
		PopupMenu popup = new PopupMenu(MainActivity.this, v);
	    MenuInflater inflater = popup.getMenuInflater();
	    inflater.inflate(R.menu.popup, popup.getMenu());
	    popup.show();
	}版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/q610098308/article/details/49589493