Android 的上下文菜单类似于 PC 上的右键菜单。当为一个视图注册了上下文菜单之后,长按这个视图对象就会弹出一个浮动菜单,即上下文菜单。任何视图都可以注册上下文菜单,不过,最常见的是用于列表视图ListView的item。注意:Android 的上下文菜单不支持图标或快捷键。

下面是上下文的创建步骤:

1.在activity的onCreate(...)方法中为一个view注册上下文菜单
2.在onCreateContextMenuInfo(...)中生成上下文菜单。
3.在onContextItemSelected(...)中响应上下文菜单项

下面通过一个简单例子,练习一下其使用。

  1. public class MainActivity extends ListActivity {
  2. private static final int ITEM1 = Menu.FIRST;
  3. private static final int ITEM2 = Menu.FIRST+1;
  4. private static final int ITEM3 = Menu.FIRST+2;
  5. /** Called when the activity is first created. */
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. showListView();
  10. //为 ListView 的所有 item 注册 ContextMenu
  11. registerForContextMenu(getListView());
  12. //这里的registerForContextMenu()也可以用下面的语句替代
  13. //getListView().setOnCreateContextMenuListener(this);
  14. }
  15. private void showListView(){
  16. String[] mString = new String[]{
  17. "路飞-Monkey D Luffy",
  18. "奈美-Nami",
  19. "卓洛-Zoro",
  20. "山治-Sanji",
  21. "尼可·罗宾-Ms. All Sunday",
  22. "乌索普-usoppu",
  23. "托尼托尼·乔巴-Tony Tony Chopper",
  24. };
  25. ArrayAdapter<String> mla = new ArrayAdapter<String>(MainActivity.this,
  26. R.layout.main, mString);
  27. MainActivity.this.setListAdapter(mla);
  28. }
  29. //上下文菜单,本例会通过长按条目激活上下文菜单
  30. @Override
  31. public void onCreateContextMenu(ContextMenu menu, View view,
  32. ContextMenuInfo menuInfo) {
  33. menu.setHeaderTitle("人物简介");
  34. //添加菜单项
  35. menu.add(0, ITEM1, 0, "特长");
  36. menu.add(0, ITEM2, 0, "战斗力");
  37. menu.add(0, ITEM3, 0, "经典语录");
  38. }
  39. //菜单单击响应
  40. @Override
  41. public boolean onContextItemSelected(MenuItem item){
  42. //获取当前被选择的菜单项的信息
  43. //AdapterContextMenuInfo info = (AdapterContextMenuInfo)item.getMenuInfo();
  44. //Log.i("braincol",String.valueOf(info.id));
  45. switch(item.getItemId()){
  46. case ITEM1:
  47. //在这里添加处理代码
  48. break;
  49. case ITEM2:
  50. //在这里添加处理代码
  51. break;
  52. case ITEM3:
  53. //在这里添加处理代码
  54. break;
  55. }
  56. return true;
  57. }
  58. }

运行程序,多次唤出上下文菜单,注意LogCat的输出,onCreateContextMenu每一次都被调用了。如果想要看看这几个方法是怎样顺序调用的,可以通过log打印信息来查看。

android 使用上下文菜单ContextMenu相关推荐

  1. (4.0.15.3)Android 的上下文菜单: ContextMenu的使用方法以及与OptionMenu的区别

    ContextMenu是Android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来.比如EditeText就可以通过长按来弹出拥有"cut" ...

  2. 【Android】上下文菜单ContextMenu的使用

    上下文菜单 又称长按菜单.当一个视图注册了上下文菜单时,执行一个在该对象上长按(2秒)的动作,将出现一个具有相关功能的浮动菜单. 类概述 扩展自Menu的上下文菜单提供了修改上下文菜单头(header ...

  3. Android进阶(二十八)上下文菜单ContextMenu使用案例

    上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...

  4. Android 的上下文菜单: Context Menu

    本文转载自: https://www.cnblogs.com/hibraincol/archive/2010/09/30/1839014.html 作者:hibraincol 转载请注明该声明. 概述 ...

  5. Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())

    概述: Android 的上下文菜单类似于 PC 上的右键菜单.当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单.任何视图都可以注册上下文菜单,不过, ...

  6. 5.4 Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())

    Android 的上下文菜单: Context Menu,registerForContextMenu(getListView()) Android 的上下文菜单类似于 PC 上的右键菜单.当为一个视 ...

  7. 学习之路(一)Android 的上下文菜单: Context Menu,registerForContextMenu(getListView());

    概述: Android 的上下文菜单类似于 PC 上的右键菜单.当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单.任何视图都可以注册上下文菜单,不过, ...

  8. android 关闭上下文菜单,【Android笔记】ContextMenu上下文菜单

    ContextMenu上下文菜单 1.ContextMenu菜单的组成部分 标题及标题图标 菜单内容 菜单内容的点击响应事件 2.ContextMenu与OptionMenu的区别 OptionMen ...

  9. 上下文菜单ContextMenu

    Res目录下menu下创建listview_menu.xml <?xml version="1.0" encoding="utf-8"?> < ...

最新文章

  1. 北京中天荣泰视觉检测 仿真
  2. PHP 8 确认支持 JIT
  3. linux java编译后生成文件_Linux终端编译并执行Java文件
  4. addroid 自定义布局
  5. linux iptables 编译,Linux下编译安装iptables
  6. leetcode - 467. 环绕字符串中唯一的子字符串
  7. nodejs mysql 返回值_带有Mysql数据库返回值的Nodejs
  8. 小组文化——洗洗睡了的故事
  9. Imagej分析所有气泡的粒径
  10. 详细了解 clientWidth、clientHeight、clientLeft、clientTop 以及几个常用的场景
  11. Ubuntu64位安装Adobe Reader 9.5.5
  12. Savitzky-Golay 滤波器
  13. 独家放送!搞定大屏可视化,深得老板心的大屏在这里
  14. 苹果各版本手机更换电池的视频
  15. 创始人负债10亿,开课吧即将“下课”?
  16. activiti 流程设计模型(model) 和 部署(deployment)及流程定义(processDefinition)之间的关系;
  17. labview对dll的调用
  18. 快速删除node_modules文件夹:rimraf node_modules
  19. win8能发挥服务器性能吗,win10系统和win8.1系统哪个更好用?windows10和windows8.1性能对比解析...
  20. linux centos用smartctl 打开硬盘写缓存

热门文章

  1. 虚火之下的直播,盈利真的只是一场美梦?
  2. 神经网络模型预测控制,神经网络回归预测模型
  3. 计算机考研分数403,初试403分,我的考研经验全在这
  4. pytorch torch.sort()的用法以及例子
  5. 得墨忒耳定律 (Law of Demeter,缩写LoD)
  6. MySQL性能优化配置诀窍之细水长流
  7. 华为matebook X Pro Deepin Linux改真机装Ubuntu Linux 笔记
  8. caj粘贴到word后换行
  9. MIT 线性代数(4—6)读书笔记
  10. 微信浏览器无法跳转到apk下载链接