• 选项菜单: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;@Overrideprotected 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) ;}@Overridepublic 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()) {// 判断操作的菜单IDcase 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;}}

效果:






更多相关文章

  1. 沉浸式状态栏,无缝换肤,带3D感觉的侧滑菜单……
  2. Android导航栏ActionBar的详细分析
  3. android版的path2.0菜单功能实现
  4. TranslateAnimatin 实现的动态菜单
  5. app/android:showAsAction的区别
  6. android弹出式菜单(效果爆炸)
  7. Android——拍照、剪切、得到图片/从相册中选择照片(api19以上和
  8. Android实现侧滑菜单DrawerLayout
  9. Android: Type Method 'NewStringUTF' could not be resolved 的

随机推荐

  1. MYSQL社区版安装手册
  2. 有没有办法确定是由Web应用程序(php进程)执
  3. mysql客户端工具使用
  4. PHP Array - 保存到MySQL时的奇数数据
  5. mysql 触发器 自动补全字段
  6. MySql-cluster中NDBD进程占用内存能否通
  7. JAVA使用JDBC连接MySQL数据库
  8. 如何在VB.net中进行备份和恢复mysql数据
  9. win7下Django的MySql安装,问题解决方案
  10. Hibernate不尊重MySQL auto_increment主