欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android之菜单大锅烩(19) 博客分类: Android初步 android选项此单子菜单 

程序员文章站 2024-03-11 21:11:07
...
  • 选项菜单: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();
	}

实现效果如下:

 
Android之菜单大锅烩(19)
            
    
    博客分类: Android初步 android选项此单子菜单 


Android之菜单大锅烩(19)
            
    
    博客分类: Android初步 android选项此单子菜单 

另一种方法是在配置文件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;
	}


}

 

效果:


Android之菜单大锅烩(19)
            
    
    博客分类: Android初步 android选项此单子菜单 
 
Android之菜单大锅烩(19)
            
    
    博客分类: Android初步 android选项此单子菜单