android的上下文菜单---context menu

    博客分类:
  • android
Android 游戏 XML OS

android的菜单有三种:

Options Menu
当用户按下menu button按钮时显示的菜单
Context Menu
当用户长久按住屏幕,即被注册显示上下文菜单的视图时显示的菜单
Submenu
当用户按下一个菜单的某个选项时弹出的子菜单
现在演示一个上下文菜单。
main.xml布局文件:此布局文件定义了listview,用来显示一组列表,稍后上下文菜单将被注册到该listview,并且响应该listview。
Xml代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/layout"
  4. android:layout_width="fill_parent"android:layout_height="fill_parent">
  5. <ListViewandroid:id="@+id/lv_list"android:layout_width="wrap_content"
  6. android:layout_height="fill_parent">
  7. </ListView>
  8. </RelativeLayout>
item.xml布局文件,用来显示listview中的一个单独的控件
Xml代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:id="@+id/layout"
  4. android:layout_width="fill_parent"android:layout_height="fill_parent">
  5. <TextViewandroid:id="@+id/tv"android:layout_width="wrap_content"
  6. android:layout_height="fill_parent"
  7. android:textSize="20dip"
  8. >
  9. </TextView>
  10. </RelativeLayout>
在layout下新建一个menu文件夹,在建一个menu.xml布局文件
Xml代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <menuxmlns:android="http://schemas.android.com/apk/res/android">
  3. <itemandroid:id="@+id/new_game"android:title="新游戏"/>
  4. <itemandroid:id="@+id/help"android:title="寻求帮助"/>
  5. <itemandroid:id="@+id/addnew"android:title="添加新游戏"/>
  6. <itemandroid:id="@+id/delete"android:title="删除游戏"/>
  7. </menu>
主activity代码
Java代码
  1. packageorg.ynu.android;
  2. importjava.util.ArrayList;
  3. importjava.util.HashMap;
  4. importandroid.app.Activity;
  5. importandroid.os.Bundle;
  6. importandroid.view.ContextMenu;
  7. importandroid.view.ContextMenu.ContextMenuInfo;
  8. importandroid.view.Menu;
  9. importandroid.view.MenuInflater;
  10. importandroid.view.MenuItem;
  11. importandroid.view.View;
  12. importandroid.view.View.OnClickListener;
  13. importandroid.widget.AdapterView.AdapterContextMenuInfo;
  14. importandroid.widget.Button;
  15. importandroid.widget.ListView;
  16. importandroid.widget.SimpleAdapter;
  17. importandroid.widget.TextView;
  18. importandroid.widget.Toast;
  19. publicclassMenuActivityextendsActivity{
  20. privateListViewlv;
  21. /**Calledwhentheactivityisfirstcreated.*/
  22. @Override
  23. publicvoidonCreate(BundlesavedInstanceState){
  24. super.onCreate(savedInstanceState);
  25. setContentView(R.layout.main);
  26. //如定义了一个listview控件
  27. ArrayList<HashMap<String,String>>list=newArrayList<HashMap<String,String>>();
  28. HashMap<String,String>map1=newHashMap<String,String>();
  29. map1.put("item","第一个菜单项");
  30. HashMap<String,String>map2=newHashMap<String,String>();
  31. map2.put("item","第二个菜单项");
  32. HashMap<String,String>map3=newHashMap<String,String>();
  33. map3.put("item","第三个菜单项");
  34. HashMap<String,String>map4=newHashMap<String,String>();
  35. map4.put("item","第四个菜单项");
  36. HashMap<String,String>map5=newHashMap<String,String>();
  37. map5.put("item","第五个菜单项");
  38. list.add(map1);
  39. list.add(map2);
  40. list.add(map3);
  41. list.add(map4);
  42. list.add(map5);
  43. //初始化该控件
  44. lv=(ListView)findViewById(R.id.lv_list);
  45. //定义适配器参数为该显示信息用的布局文件以及显示信息用的控件,这里是一个textview控件
  46. SimpleAdapteradapter=newSimpleAdapter(this,list,R.layout.item,newString[]{"item"},newint[]{R.id.tv});
  47. lv.setAdapter(adapter);
  48. //注册上下文菜单显示用的view
  49. registerForContextMenu(this.lv);
  50. }
  51. //该方法在注册的view被被长按时创建该view的上下文菜单
  52. @Override
  53. publicvoidonCreateContextMenu(ContextMenumenu,Viewv,
  54. ContextMenuInfomenuInfo){
  55. //TODOAuto-generatedmethodstub
  56. MenuInflaterinflater=getMenuInflater();
  57. inflater.inflate(R.menu.menu,menu);
  58. super.onCreateContextMenu(menu,v,menuInfo);
  59. }
  60. //当菜单某个选项被点击时调用该方法
  61. @Override
  62. publicbooleanonContextItemSelected(MenuItemitem){
  63. //TODOAuto-generatedmethodstub
  64. AdapterContextMenuInfoinfor=(AdapterContextMenuInfo)item.getMenuInfo();
  65. switch(item.getItemId())
  66. {
  67. caseR.id.help:
  68. Toast.makeText(this,"请求帮助",Toast.LENGTH_LONG).show();
  69. returntrue;
  70. caseR.id.addnew:
  71. Toast.makeText(this,"添加新的",Toast.LENGTH_LONG).show();
  72. returntrue;
  73. caseR.id.delete:
  74. Toast.makeText(this,"删除信息",Toast.LENGTH_LONG).show();
  75. returntrue;
  76. caseR.id.new_game:
  77. Toast.makeText(this,"新游戏",Toast.LENGTH_LONG).show();
  78. returntrue;
  79. default:
  80. returnsuper.onContextItemSelected(item);
  81. }
  82. }
  83. //当上下文菜单关闭时调用的方法
  84. @Override
  85. publicvoidonContextMenuClosed(Menumenu){
  86. //TODOAuto-generatedmethodstub
  87. super.onContextMenuClosed(menu);
  88. }
  89. }
效果图

更多相关文章

  1. Android(安卓)DatePickerDialog 只显示年月
  2. 详解android:scaleType属性
  3. android ---spannableStringBuilder
  4. Day1.5--Android简介之初识Activity
  5. Android开发学习笔记(十一)ListView/ActivityManager/ArrayAdapter
  6. Android之UI学习篇二:TextVeiw显示表情和跑马灯效果
  7. 5.4 Android(安卓)的上下文菜单: Context Menu,registerForConte
  8. Android(安卓)重点知识回顾
  9. Android菜单操作之创建并响应菜单

随机推荐

  1. android 输入对话框
  2. Android判断网络状态
  3. Android(安卓)创建DBHelper类
  4. android远程绑定与本地绑定区别
  5. LK based Android(安卓)bootloader
  6. android中ActionBar +Fragment
  7. android操作ini工具类
  8. m2e-android (一个集成ADT和 Maven Androi
  9. android中的定时任务AlarmManager
  10. [Android] Android打开WIFI或者移动网络