创建一个上下文菜单

一个上下文菜单跟PC上的右键菜单类似.你应使用上下文菜单为用户界面上的某个部分提供动作选择功能.在Android中,一个上下文菜单会在用户长按一个界面条目时出现.

你可以为任何View创建上下文菜单,但是在 ListView中是最常用到上下文菜单的.每当用户在一个ListView项上长按,并且这个ListView注册了上下文菜单,那么被按的 list item就会弹出上下文菜单 (在联系人应用中就演示了这个过程).
Register a ListView

activity使ListViewlist items单,ListViewregisterForContextMenu()如:

registerForContextMenu(getListView());

为了使view提供上下文菜单,你必须为这个View向系统注册上下文菜单.调用方法 registerForContextMenu() 并传入要弹出菜单的 View 作为参数即可.当这个View被长按时,它就会显示一个上下文菜单.

为了定义上下文菜单的样子和行为,需重写你的activity的上下文菜单回调方法:onCreateContextMenu() 和onContextItemSelected().

例如,下面是一个 onCreateContextMenu() ,使用了资源文件 context_menu.xml :

MenuInflater 被用于从一个 菜单资源inflate出一个菜单. (你也可以使用 add() 来添加菜单项们) .回调函数的参数中包含了用户所选择的View 和一个ontextMenu.ContextMenuInfo 对象,它可以提供被选择的View的更多的信息.你可以使用这些参数来决定哪个上下文菜单应被创建.但是在这个例子中,Activity所有的上下文菜单都是相同的.

然后,当用户从上下文菜单选择一个菜单项时,系统会调用方法 onContextItemSelected(). 下面的例子展示了如何处理被选择的菜单项:

这些代码与选项菜单中的例子代码基本相同.getItemId() 从所选的菜单项获取菜单ID,并且使用switch语句匹配菜单ID与对应的处理.并且同于选项菜单的例子,default语句调用父类的同一方法处理未被我们处理的菜单项.

在此例中,被选择的View条目是一个 ListView条目.为了在选择的一个view条目上执行相应的动作,应用程序需要知道View条目的list ID.为了获得 list ID,程序中调用了 getMenuInfo(), 它返回一个 AdapterView.AdapterContextMenuInfo 对象,这个对象包含了条目的list ID.本地方法editNote()和deleteNote()接受这个list ID用于执行一些作.

注: 上下文菜单项不支持图标或快捷键.




更多相关文章

  1. android菜单资源
  2. GitHub“最受欢迎的开源项目” TOP 50 android开源项目 直接拿来
  3. Android之——史上最简单旋转菜单实现效果
  4. Android底部菜单的封装及重用
  5. mac10.8下搭建Android的Eclipse开发环境
  6. Google 官方:对 Android(安卓)手机硬件菜单按钮说拜拜
  7. 【Android(安卓)开发】:UI控件之 Menu 菜单的的使用(二)
  8. (转)android底部菜单应用
  9. Android(安卓)无法解决的几处硬伤

随机推荐

  1. 【Android每周专题】Android中maxSdkVers
  2. android 横竖屏
  3. Android开发1――查找所需要出示权限的内
  4. Android(安卓)风格
  5. android 使用代码方式创建自定义progress
  6. android使用activity切换动画效果
  7. RelativieLayout布局中的android:gravity
  8. Eclipse下Android开发环境的搭建
  9. Android系统启动流程浅析
  10. Android Layout.xml布局属性