Menu的使用
来源:互联网 发布:json转换成字符串 编辑:程序博客网 时间:2024/05/06 20:10
三种menu:1、OptionsMenu;2、ContextMenu;3、SubMenu
一、OptionsMenu
public boolean onCreateOptionsMenu(Menu menu):使用此方法调用OptionsMenu 。
public boolean onOptionsItemSelected(MenuItem item):选中菜单项后发生的动作。
public void onOptionsMenuClosed(Menu menu):菜单关闭后发生的动作。
public boolean onPrepareOptionsMenu(Menu menu):选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。如果返回为false,则onCreateOptionsMenu(Menu menu)将不会被调用。
public boolean onMenuOpened(int featureId, Menu menu):单打开后发生的动作。
默认样式是在屏幕底部弹出一个菜单,这个菜单我们就叫他选项菜单OptionsMenu,一般情况下,选项菜单最多显示2排每排3个菜单项,这些菜单项有文字有图标,也被称作Icon Menus,如果多于6项,从第六项开始会被隐藏,在第六项会出现一个More里,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded Menus
如下一个利用系统再带图标实现的OptionMenu实例:
@Override public boolean onCreateOptionsMenu(Menu menu){ menu.add(Menu.NONE,Menu.FIRST+1,5,"删除").setIcon(android.R.drawable.ic_delete); menu.add(Menu.NONE, Menu.FIRST + 2, 2, "保存").setIcon(android.R.drawable.ic_menu_edit); 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, 3, "发送").setIcon(android.R.drawable.ic_menu_send); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ switch(item.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; } return false; }
二、ContextMenu
当一个视图注册到一个上下文菜单时,执行一个在该对象上的“长按”(按住不动差不多两秒钟)动作,将出现一个提供相关功能的浮动菜单,这个菜单就是上下文菜单。
分三个步骤实现:
1、重载public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo info)
2、重载public boolean onContextItemSelected(MenuItem item)
3、为一个view注册 ,registerForContextMenu(View v)
如下一个例子:
@Override public void onCreateContextMenu(ContextMenu contextMenu,View view,ContextMenuInfo info){ super.onCreateContextMenu(contextMenu, view, info); contextMenu.add(ContextMenu.NONE, 0, 0, "Edit"); contextMenu.add(ContextMenu.NONE, 1, 1, "Delete"); } @Override public boolean onContextItemSelected(MenuItem item){ AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo(); switch(item.getItemId()){ case 0: Toast.makeText(this, "Edit", Toast.LENGTH_LONG).show(); return true; case 1: Toast.makeText(this, "Delete", Toast.LENGTH_LONG).show(); return true; default: return super.onContextItemSelected(item); } }
然后在Activity的onCreate中添加:
View mainView = View.inflate(this, R.layout.main, null);registerForContextMenu(mainView);
三、SubMenu
子菜单就是将相同功能的分组进行多级显示的一种菜单。
创建子菜单的步骤:
1、 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单
2、 调用SubMenu的add()方法,添加子菜单
3、 覆盖onContextItemSelected()方法,响应子菜单的单击事件
看下面一个例子:
private static final int ITEM1 = Menu.FIRST; private static final int ITEM2 = Menu.FIRST + 1; //.............................. @Override public boolean onCreateOptionsMenu(Menu menu){ SubMenu file = menu.addSubMenu("文件"); SubMenu edit = menu.addSubMenu("编辑"); file.add(Menu.NONE, ITEM1, 0, "新建"); file.add(Menu.NONE, ITEM2, 1, "打开"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item){ switch (item.getItemId()) { case ITEM1: setTitle("新建文件"); break; case ITEM2: setTitle("打开文件"); break; } return true; }
- menu控件的使用
- Struts menu的使用
- Menu控件的使用
- menu控件的使用
- Android Menu的使用
- android的Menu使用
- android的Menu使用
- android的Menu使用
- android的Menu使用
- android的Menu使用
- android的Menu使用
- android的Menu使用
- Menu的使用
- Menu的使用
- android的Menu使用
- android的Menu使用
- android的Menu使用
- android的Menu使用
- Blaze Data Services还是LiveCycle Data Services?
- BorderLayout
- webkit 更新播放状态
- 正则表达式口诀!!!强烈推荐!!!
- 15条CSS编写常识
- Menu的使用
- java文件下载程序中,解决汉字文件名乱码
- 那些看不起凤凰传奇的人,我想和你们谈谈――【很学术很严肃】
- 国外RS&GIS权威期刊杂志
- IOS中的sqlite数据库的使用
- Fail-fast机制
- CardLayout
- HDU4144 TLE
- 字符集、编码和字体