`

Android之菜单大锅烩(19)

阅读更多
  • 选项菜单:OptionsMenu

选项菜单是我们最常用的,我们打开Activity会发现一个目前我们用不到的的自动生成代码:

public boolean onCreateOptionsMenu(Menu menu) 

 

这就是创建菜单的方法,现在我们来实现一个简单的选项菜单:

在Activity加入以下代码:

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(Menu.NONE,Menu.FIRST+1,5,"删除").setIcon(android.R.drawable.ic_menu_delete);
		menu.add(Menu.NONE,Menu.FIRST+2,2,"保存").setIcon(android.R.drawable.ic_menu_save);
		menu.add(Menu.NONE,Menu.FIRST+3,6,"帮助").setIcon(android.R.drawable.ic_menu_help);
		menu.add(Menu.NONE,Menu.FIRST+4,1,"添加").setIcon(android.R.drawable.ic_menu_add);
		menu.add(Menu.NONE,Menu.FIRST+5,4,"详细").setIcon(android.R.drawable.ic_menu_info_details);
		menu.add(Menu.NONE,Menu.FIRST+6,7,"发送").setIcon(android.R.drawable.ic_menu_send);
		menu.add(Menu.NONE,Menu.FIRST+7,3,"编辑").setIcon(android.R.drawable.ic_menu_edit);
		return true;
	}
	public boolean onOptionsItemSelected(MenuItem menu){
		switch(menu.getItemId()){
		case  Menu.FIRST+1:
			Toast.makeText(this, "您选择的是删除菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+2:
			Toast.makeText(this, "您选择的是保存菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+3:
			Toast.makeText(this, "您选择的是帮助菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+4:
			Toast.makeText(this, "您选择的是添加菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+5:
			Toast.makeText(this, "您选择的是详细菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+6:
			Toast.makeText(this, "您选择的是发送菜单项", Toast.LENGTH_LONG).show();
		    break;
		case  Menu.FIRST+7:
			Toast.makeText(this, "您选择的是编辑菜单项", Toast.LENGTH_LONG).show();
		    break;
		
		    
		}
		
		return false;
		
	}
	public void onOptionsMenuClosed(Menu menu){
		Toast.makeText(this, "菜单项关闭", Toast.LENGTH_LONG).show();
	}
	public void onOptionsPrepareOptionsMenu(Menu menu){
		Toast.makeText(this, "在菜单打开前执行此操作,可以做预处理", Toast.LENGTH_LONG).show();
	}

实现效果如下:

 


另一种方法是在配置文件menu/menu.xml配置菜单项

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:id="@+id/item1"
        android:title="添加"
        android:icon="@android:drawable/ic_menu_add"
        
        />
     <item
        android:id="@+id/item1"
        android:title="删除"
        android:icon="@android:drawable/ic_menu_add"
        
        />
      <item
        android:id="@+id/item1"
        android:title="编辑"
        android:icon="@android:drawable/ic_menu_add"
        
        />
       <item
        android:id="@+id/item1"
        android:title="帮助"
        android:icon="@android:drawable/ic_menu_add"
        
        />
    
    

</menu>

 然后将Activity修改为:

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);
		super.getMenuInflater().inflate(R.menu.mymenu, menu);
//		menu.add(Menu.NONE,Menu.FIRST+1,5,"删除").setIcon(android.R.drawable.ic_menu_delete);
//		menu.add(Menu.NONE,Menu.FIRST+2,2,"保存").setIcon(android.R.drawable.ic_menu_save);
//		menu.add(Menu.NONE,Menu.FIRST+3,6,"帮助").setIcon(android.R.drawable.ic_menu_help);
//		menu.add(Menu.NONE,Menu.FIRST+4,1,"添加").setIcon(android.R.drawable.ic_menu_add);
//		menu.add(Menu.NONE,Menu.FIRST+5,4,"详细").setIcon(android.R.drawable.ic_menu_info_details);
//		menu.add(Menu.NONE,Menu.FIRST+6,7,"发送").setIcon(android.R.drawable.ic_menu_send);
//		menu.add(Menu.NONE,Menu.FIRST+7,3,"编辑").setIcon(android.R.drawable.ic_menu_edit);
		return true;
	}

 前面的代码注释掉了,两种方法都可以,但是为了以后的修改方便不要使用过多的硬代码,符合MVC模式,建议用第二种方法。

  • 上下文菜单 ContextMenu

上下文菜单类似于windows右键功能,以列表形式列出一系列菜单,这种在手机默认显示上下文菜单,在虚拟器显示选项菜单。因此读者了解即可

  • 子菜单   菜单中的菜单

Activity代码是:

public class MainActivity extends Activity {
	private String data[] = new String[] { "操作系统", "计算机网络",
			"计算机图形", "信息安全", "汇编语言" }; // 定义ListView的显示项
	private ListView listView = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.listView = new ListView(this);
		this.listView.setAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_expandable_list_item_1, this.data));
		super.setContentView(this.listView);
		super.registerForContextMenu(this.listView) ;
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		SubMenu save=menu.addSubMenu("保存");
		SubMenu edit=menu.addSubMenu("编辑");
		save.add(Menu.NONE,Menu.FIRST + 1 , 1, "新建") ;
		save.add(Menu.NONE,Menu.FIRST + 2 , 2, "打开") ;
		save.add(Menu.NONE,Menu.FIRST + 3 , 3, "保存") ;
		edit.add(Menu.NONE,Menu.FIRST + 4 , 4, "撤消") ;
		edit.add(Menu.NONE,Menu.FIRST + 5 , 5, "恢复") ;
		
		return true;
	}
	
	public boolean onOptionsItemSelected(MenuItem item) {
		switch(item.getItemId()) {	// 判断操作的菜单ID
		case Menu.FIRST + 1: 
			Toast.makeText(this, "您选择的是“添加联系人”项", Toast.LENGTH_LONG).show() ;
			break ;
		case Menu.FIRST + 2: 
			Toast.makeText(this, "您选择的是“查看详情”项", Toast.LENGTH_LONG).show() ;
			break ;
		case Menu.FIRST + 3: 
			Toast.makeText(this, "您选择的是“删除信息”项", Toast.LENGTH_LONG).show() ;
			break ;
		case Menu.FIRST + 4: 
			Toast.makeText(this, "您选择的是“另存为”项", Toast.LENGTH_LONG).show() ;
			break ;
		case Menu.FIRST + 5: 
			Toast.makeText(this, "您选择的是“编辑”项", Toast.LENGTH_LONG).show() ;
			break ;
		}
		return false;
	}


}

 

效果:



 

 

 


 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics