xml文件:

  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:layout_width="match_parent"
  4. android:layout_height="match_parent"
  5. android:paddingBottom="@dimen/activity_vertical_margin"
  6. android:paddingLeft="@dimen/activity_horizontal_margin"
  7. android:paddingRight="@dimen/activity_horizontal_margin"
  8. android:paddingTop="@dimen/activity_vertical_margin"
  9. tools:context="com.example.menudemo.ContextMenuDemo" >
  10.  
  11. <ListView
  12. android:id="@+id/listView"
  13. android:layout_width="match_parent"
  14. android:layout_height="match_parent"
  15. ></ListView>
  16.  
  17. </RelativeLayout>

源代码:

  1. package com.example.menudemo;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import android.app.Activity;
  7. import android.os.Bundle;
  8. import android.view.ContextMenu;
  9. import android.view.Menu;
  10. import android.view.MenuItem;
  11. import android.view.View;
  12. import android.view.ContextMenu.ContextMenuInfo;
  13. import android.widget.ArrayAdapter;
  14. import android.widget.ListView;
  15. import android.widget.Toast;
  16. /**
  17. * ContextMenu的组成
  18. * 标题以及标题图标
  19. * 菜单内容
  20. * 菜单内容的点击响应事件
  21. *
  22. * ContextMenu与OptionMenu的区别:
  23. * OptionMenu对应的是activity,一个activity只能拥有一个选项菜单
  24. * ContextMenu对应的是View,每个View都可以设置上下文菜单
  25. * 一般情况下ContextMenu常用于ListView或者GridView
  26. * ContextMenu创建方法
  27. * 首先给View注册上下文菜单registerForContextMenu()
  28. * 添加上下文菜单内容onCreateContextMenu()
  29. * -通过代码动态添加
  30. * -加载xml文件中的菜单项
  31. * 设置菜单点击后响应事件onContextItemSelected()
  32. * @author Administrator
  33. *
  34. */
  35. public class ContextMenuDemo extends Activity {
  36.  
  37. private ListView listview;
  38. @Override
  39. protected void onCreate(Bundle savedInstanceState) {
  40. super.onCreate(savedInstanceState);
  41. setContentView(R.layout.context_menu);
  42. showListView();
  43. this.registerForContextMenu(listview);//给ListView注册上下文菜单
  44. }
  45. @Override
  46. public void onCreateContextMenu(ContextMenu menu, View v,
  47. ContextMenuInfo menuInfo) {
  48. // TODO Auto-generated method stub
  49. super.onCreateContextMenu(menu, v, menuInfo);
  50. //设置Menu显示的内容
  51. menu.setHeaderIcon(R.drawable.ic_launcher);
  52. menu.setHeaderTitle("file oprate");
  53. menu.add(1, 1, 1, "copy");
  54. menu.add(1, 2, 1, "cut");
  55. menu.add(1, 3, 1, "delete");
  56. menu.add(1, 4, 1, "rename");
  57. /**加载xml文件中的菜单项
  58. * getMenuInflater().inflate(R.menu.main,menu);
  59. */
  60.  
  61. }
  62. @Override
  63. public boolean onContextItemSelected(MenuItem item) {
  64. // TODO Auto-generated method stub
  65. switch(item.getItemId()){
  66. case 1:
  67. Toast.makeText(this, "copy", Toast.LENGTH_SHORT).show();
  68. break;
  69. case 2:
  70. Toast.makeText(this, "cut", Toast.LENGTH_SHORT).show();
  71. break;
  72. case 3:
  73. Toast.makeText(this, "delete", Toast.LENGTH_SHORT).show();
  74. break;
  75. case 4:
  76. Toast.makeText(this, "rename", Toast.LENGTH_SHORT).show();
  77. break;
  78. }
  79.  
  80. return super.onContextItemSelected(item);
  81.  
  82. }
  83. /**
  84. * 设置ListView显示的内容
  85. */
  86. private void showListView(){
  87. listview = (ListView) findViewById(R.id.listView);
  88. ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,getData());
  89. listview.setAdapter(adapter);
  90. }
  91. /**
  92. * 构造ListView显示的数据
  93. * @return
  94. */
  95. private List<String> getData() {
  96. // TODO Auto-generated method stub
  97. List<String> list = new ArrayList<String>();
  98. for(int i = 0;i<5;i++){
  99. list.add("file"+(i+1));
  100. }
  101. return list;
  102. }
  103.  
  104. }

Android_Menu_contextMenu的更多相关文章

随机推荐

  1. 使用selector修改TextView中字体的颜色

    selector想必大家都用过了,但是在修改字体的颜色的时候还是要细心. 我们在TextView中设置字体颜色一般使用 android:textColor="@color/red" ...

  2. POJ 1947-Rebuilding Roads(树形背包)

    题意: 一个树求得到一个节点数为p的子树,最小需要删除的边数. 分析:父节点到儿子这条边,删或不删,背包问题. #include <map> #include <set> #i ...

  3. HDU 5696 区间的价值 暴力

    分析:枚举以该点为最小值,然后找到最大值,更新,相应数组,至此,把区间分割(因为包含这个最小值点已经枚举过) 然后理解理解,感觉好像挺对的...因为后面(即dfs区间变小时)如果再包含最小值节点,也不 ...

  4. QTP、LoadRunner、QC工具下载地址

    QTP10.0工具下载地址:http://h30302.www3.hp.com/prdownloads/T6510-15063.zip?ordernumber=380454070&itemid ...

  5. json解析之jackson ObjectMapper

    Json解析常用的有fastjson和jackson,性能上网上有不少的对比,说是fastjson比较好,今天先整理一下jackson的东西,后面再发一个fastjson的. jackson是spri ...

  6. mexopencv问题:Invalid MEX file GLIBCXX_3.4.15 error

    参考:http://blog.sina.com.cn/s/blog_74112f030101cmxt.html root@debian-yuliyang:/opt/matlab/sys/os/glnx ...

  7. 多线程与网络之NSURLConnection发送请求

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  8. python 网络编程(四)---UDP服务端客户端

    1.服务器端 UDP服务器建立与TCP相类似,具体比较如下: 补充下,第四步:不必使用listen还有accept函数. 具体代码如下:(设置socket选项省略) import socket fro ...

  9. POJ3264 Balanced Lineup 线段树区间最大值 最小值

    Q个数 问区间最大值-区间最小值 // #pragma comment(linker, "/STACK:1024000000,1024000000") #include <i ...

  10. HDU 1698 Just a Hook 区间更新 lazy标记

    lazy标记 #include <iostream> #include <cstdio> #include <cstring> #include <sstre ...