【Android攻城狮认识ContextMenu】博观而约取,厚积而薄发。这篇文章主要讲述Android攻城狮认识ContextMenu相关的知识,希望能为你提供帮助。
什么是ContextMenu? 例如Windows系统的右键菜单,在android中长按某个文件夹,会跳出菜单,这个菜单就是ContextMenu。 ContextMenu与OptionMenu的区别 1. OptionMenu对应的是activity,一个activity只能拥有一个选项菜单; 2. ContextMenu对应的是View,每一个View都可以设置上下文菜单; 3. 一般情况下ContextMenu常用于ListView或者GridView。ContextMenu创建方法 首先给View 注册上下文菜单registerForContextMenu() 添加上下文菜单内容 onCreateContextMenu() -- 可以通过代码动态添加; -- 可以加载xml文件中的菜单项。 设置菜单点击后的响应事件 onContextItemSelected()。
1 public class MainActivity extends ActionBarActivity { 2 3@Override 4protected void onCreate(Bundle savedInstanceState) { 5super.onCreate(savedInstanceState); 6setContentView(R.layout.fragment_main); 7showListView(); 8 9} 10 11// 设置showListView显示内容 12private void showListView() { 13ListView listView = (ListView) findViewById(R.id.listView1); 14ArrayAdapter< String> adapter = new ArrayAdapter< String> (this, 15android.R.layout.simple_list_item_1, getData()); 16listView.setAdapter(adapter); 17this.registerForContextMenu(listView); 18 19} 20 21@Override 22public void onCreateContextMenu(ContextMenu menu, View v, 23ContextMenuInfo menuInfo) { 24// TODO Auto-generated method stub 25super.onCreateContextMenu(menu, v, menuInfo); 26// 设置meun显示内容 27menu.setHeaderTitle("文件操作"); 28menu.setHeaderIcon(R.drawable.ic_launcher); 29// 方法一 代码加载 30// menu.add(1, 1, 1, "复制"); 31// menu.add(1, 2, 1, "粘贴"); 32// menu.add(1, 3, 1, "剪切"); 33// menu.add(1, 4, 1, "重命名"); 34// 方法二, xml加载: 35MenuInflater inflater = getMenuInflater(); 36inflater.inflate(R.menu.main, menu); 37 38} 39 40// 监听事件: 41@Override 42public boolean onContextItemSelected(MenuItem item) { 43// TODO Auto-generated method stub 44 45switch (item.getItemId()) { 46// 方法一 代码加载: 47case 1: 48Toast.makeText(MainActivity.this, "点击复制", 0).show(); 49break; 50 51case 2: 52Toast.makeText(MainActivity.this, "点击粘贴", 0).show(); 53break; 54case 3: 55Toast.makeText(MainActivity.this, "点击剪切", 0).show(); 56break; 57 58case 4: 59Toast.makeText(MainActivity.this, "点击重命名", 0).show(); 60break; 61// 方法二,xml加载 62case R.id.context_menu_item1: 63Toast.makeText(MainActivity.this, "点击复制", 0).show(); 64break; 65case R.id.context_menu_item2: 66Toast.makeText(MainActivity.this, "点击粘贴", 0).show(); 67break; 68case R.id.context_menu_item3: 69Toast.makeText(MainActivity.this, "点击剪切", 0).show(); 70break; 71case R.id.context_menu_item4: 72Toast.makeText(MainActivity.this, "点击重命名", 0).show(); 73break; 74 75} 76return super.onContextItemSelected(item); 77} 78 79// 构造listview显示数据 80private ArrayList< String> getData() { 81 82ArrayList< String> list = new ArrayList< String> (); 83for (int i = 1; i < 5; i++) { 84list.add("文件" + i); 85} 86return list; 87} 88 }
文章图片
推荐阅读
- Android源码和内核源码的下载,编译和执行
- Android BaseAdapter和ViewHolder 优化 解决ListView的item抢焦点问题和item错乱问题
- Android下的数据存储与訪问 --- 以文件的形式
- Android攻城狮使用SubMenu创建子菜单
- Android 四大组件学习之ContentProvider四
- APP反编译第一课《如何找到核心代码》
- Android攻城狮OptionsMenu
- android 两次调用DatePickerDialog.onDateSet()
- PPT怎样画时间线?PPT画彩色时间线办法_PowerPoint专区