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

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

注意:Android 的上下文菜单不支持图标或快捷键。

创建一个上下文菜单的步骤:

1. 覆盖 Activity 的 onCreateContenxtMenu() 方法,调用 Menu 的 add 方法添加菜单项(MenuItem)。

2. 覆盖 Activity 的 onContextItemSelected() 方法,响应上下文菜单菜单项的单击事件。

3. 调用 registerForContextMenu() 方法,为视图注册上下文菜单。

示例:

MainActivity.java 文件:

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

main.xml 布局文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <TextView xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/myTextView"
  4. android:textSize="20sp"
  5. android:layout_width="fill_parent"
  6. android:layout_height="fill_parent"
  7. android:text="@string/hello"
  8. />

运行结果:

  

5.4 Android 的上下文菜单: Context Menu,registerForContextMenu(getListView())相关推荐

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

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

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

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

  3. 上下文菜单Context Menu

    Android的上下文菜单在概念上和PC软件的右键菜单类似.当一个视图注册到一个上下文菜单时,执行一个在该对象上的"长按"(按住不动差不多两秒钟)动作,将出现一个提供相关功能的浮动 ...

  4. Android 中实现上下文菜单(Context menu)详解

    博主前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住也分享一下给大家,

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

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

  6. android 使用上下文菜单ContextMenu

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

  7. Android 三种菜单(Menu)的实现

    一.常用方法 onCreateOptionsMenu(Menu menu) 每次Activity一创建就会执行,一般只执行一次,创建并保留Menu的实例: //获取MenuInflaterMenuIn ...

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

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

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

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

最新文章

  1. php编程题试题和答案,比较基础的php面试题及答案-编程题部分
  2. 网络服务搭建、配置与管理大全(Windows版)
  3. caffe预测、特征可视化python接口调用
  4. java 自定义监听_Spring 中的自定义事件
  5. 【洛谷P4707】重返现世【扩展Min-Max容斥】【dp】
  6. java线程池,信号量使用demo
  7. SpringBoot入门到精通_第3篇 _应用组件分析
  8. java orcl自动_Oracle自动生成编号
  9. 字符串定义操作(C语言)
  10. 雨课堂知识点总结(七)
  11. pycharm的markdown文件编写
  12. 技术文章-Java类的继承
  13. php dw文件上传下载,PHP-文件上传
  14. 三维几何图形创作方法(Geometry3D)之二
  15. vue报错elementUI使用datepicker报错Avoid mutating a prop directly since the value will be overwritten whene
  16. android+隐藏邮件地址,“通过 Apple 登录”功能的“隐藏邮件地址”
  17. Spring boot的特性与四大核心
  18. 消防应急疏散通道问题1(难度系数3)
  19. 怎么用python挣钱-利用业余时间怎么用python挣钱?
  20. 【imessage苹果推安装】软件相册代发Mac.InceptedefisValidMac帐户登录跟踪记录

热门文章

  1. easyexcle 设置列宽_easyexcel自动列宽失效
  2. 华为WLAN通过双链路实现AC热备
  3. Cocoa 系统NSNotification的Name列表
  4. 爬取淘宝商品图片(仅用于技术交流)
  5. 记录一次导出word遇到的textare换行问题
  6. ROS漫漫长路(一)——Gazebo中机器人圆柱,球,长方体惯性矩阵推导与代码实现
  7. CARSIM两个车辆模型仿真求解器出错
  8. 视频大战再起:B站、头条对战爱优腾
  9. sqlite no such table
  10. CSS学习29:字体图标(iconfont)包含下载及使用方法