概述:

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. />

运行结果:

  

转载于:https://www.cnblogs.com/hanfeihanfei/p/5392658.html

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

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

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

  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. (4.0.15.3)Android 的上下文菜单: ContextMenu的使用方法以及与OptionMenu的区别

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

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

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

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

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

最新文章

  1. PHP和js判断访问设备是否是微信浏览器实例
  2. mysql的表最多可设置多少字段?
  3. i2c连续读写间隔_迅远科技RFID产品推荐:F5808高性能八通道读写器
  4. C#9就这么来了,.NET开发者该做点什么?
  5. 过度配置堆上的OutOfMemoryError
  6. java HelloWorld时报错:“找不到或无法加载主类“问题的解决办法
  7. CISA,CISM,CISSP证书区别及cisp,oscp,osce,che简介
  8. chm打不开怎么办?
  9. 英尺、英寸和厘米的换算
  10. nginx的日志格式记录真实客户端IP
  11. 适配ipad Pro
  12. 新入职如何快速的熟悉项目
  13. Linux 修改虚拟机IP地址
  14. 实名二代身份证OCR识别
  15. 哈哈!12万行代码堆出来个「蔡徐坤」
  16. ITOP资产信息登记指导书
  17. 研发团队管理经验总结(一)
  18. python中矩阵乘以常数_在python(H.W)中单独乘以矩阵
  19. java得到sql语句表名_使用fdb-sql-parser替换SQL语句中的表名
  20. JAVA毕设项目跑腿管理系统(java+VUE+Mybatis+Maven+Mysql)

热门文章

  1. datagridview固定列宽_[C#] winform中的DataGridView的列宽设置(自动调整列宽)
  2. Java中List、Set和数组之间转换方法总结
  3. Win11家庭版系统加入域的问题解决
  4. 使用baidu的api完成汉译英功能
  5. win10 权限更改,win10专业版激活 win10安装.net3.5
  6. SVN之初恋与小三Meld优秀分支合并工具
  7. cad 打开硬件加速卡_别人发来的CAD文件,对我不太友好
  8. 测绘:利用python将cass软件导出dat数据批量转换成报部数据txt
  9. python matplotlib模块解析_Python数据分析模块二:Matplotlib
  10. 【python】字典常用方法