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. //filename:MainActivity.java
  2. packagehi.braincol.local.contextMenu;
  3. importandroid.app.ListActivity;
  4. importandroid.os.Bundle;
  5. importandroid.view.ContextMenu;
  6. importandroid.view.Menu;
  7. importandroid.view.MenuItem;
  8. importandroid.view.ContextMenu.ContextMenuInfo;
  9. importandroid.view.View;
  10. importandroid.widget.AdapterView.AdapterContextMenuInfo;
  11. importandroid.widget.ArrayAdapter;
  12. importandroid.util.Log;
  13. publicclassMainActivityextendsListActivity{
  14. privatestaticfinalintITEM1=Menu.FIRST;
  15. privatestaticfinalintITEM2=Menu.FIRST+1;
  16. privatestaticfinalintITEM3=Menu.FIRST+2;
  17. /**Calledwhentheactivityisfirstcreated.*/
  18. @Override
  19. publicvoidonCreate(BundlesavedInstanceState){
  20. super.onCreate(savedInstanceState);
  21. showListView();
  22. //为ListView的所有item注册ContextMenu
  23. registerForContextMenu(getListView());
  24. //这里的registerForContextMenu()也可以用下面的语句替代
  25. //getListView().setOnCreateContextMenuListener(this);
  26. }
  27. privatevoidshowListView(){
  28. String[]mString=newString[]{
  29. "路飞-MonkeyDLuffy",
  30. "奈美-Nami",
  31. "卓洛-Zoro",
  32. "山治-Sanji",
  33. "尼可·罗宾-Ms.AllSunday",
  34. "乌索普-usoppu",
  35. "托尼托尼·乔巴-TonyTonyChopper",
  36. };
  37. ArrayAdapter<String>mla=newArrayAdapter<String>(MainActivity.this,
  38. R.layout.main,mString);
  39. MainActivity.this.setListAdapter(mla);
  40. }
  41. //上下文菜单,本例会通过长按条目激活上下文菜单
  42. @Override
  43. publicvoidonCreateContextMenu(ContextMenumenu,Viewview,
  44. ContextMenuInfomenuInfo){
  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. publicbooleanonContextItemSelected(MenuItemitem){
  54. //获取当前被选择的菜单项的信息
  55. //AdapterContextMenuInfoinfo=(AdapterContextMenuInfo)item.getMenuInfo();
  56. //Log.i("braincol",String.valueOf(info.id));
  57. switch(item.getItemId()){
  58. caseITEM1:
  59. //在这里添加处理代码
  60. break;
  61. caseITEM2:
  62. //在这里添加处理代码
  63. break;
  64. caseITEM3:
  65. //在这里添加处理代码
  66. break;
  67. }
  68. returntrue;
  69. }
  70. }

main.xml 布局文件:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <TextViewxmlns: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. />

运行结果:


更多相关文章

  1. Android(安卓)Configuration属性解析
  2. Android(安卓)重点知识回顾
  3. [置顶] android 批量插入数据
  4. Android菜单操作之创建并响应菜单
  5. Android(安卓)Studio IDEA:基于IDEA的安卓开发环境
  6. Android学习笔记之MENU
  7. android菜单详解六:快捷键和菜单intent
  8. Android(安卓)Menu
  9. android studio开发安卓应用设置版本号

随机推荐

  1. COCOS2D-X跨ANDROID&IOS平台开发入门教程
  2. Android计算优化解析
  3. Android课堂笔记(九)——消息条、对话框、
  4. Handler机制分析
  5. Android性能优化典范
  6. android 工程里缺少 R.java 文件原因和解
  7. Android(安卓)logcat 使用
  8. Android深入浅出之Surface[1]
  9. Android高性能文件类MemoryFile
  10. 巧用布局文件实现Android中实现事件监听