Menu是一个接口, 他有2个子接口, SubMenu和ContextMenu; 前者菜单常见于按home键就会出现 ,后者是一个上下文菜单, 一般点击某个条目会在手机屏幕中出现一个类似悬浮窗口的菜单

1.SubMenu的实现

总体来说它主要有2个方法--add()和addSubMenu()前者是往子菜单中添加菜单项; 后者是添加一个新的子菜单

案例:

  1. public class MainActivity extends Activity {
  2.  
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main);
  7. }
  8.  
  9. @Override
  10. public boolean onCreateOptionsMenu(Menu menu) {
  11. // 向Menu中添加一个子菜单
  12. SubMenu subMenu1 = menu.addSubMenu(, , , "添加");
  13. SubMenu subMenu2 = menu.addSubMenu(, , , "修改");
  14. SubMenu subMenu3 = menu.addSubMenu(, , , "查询");
  15. SubMenu subMenu4 = menu.addSubMenu(, , , "删除");
  16.  
  17. // 给子菜单添加菜单项
  18. subMenu1.add(, , , "菜单项11");
  19. subMenu1.add(, , , "菜单项12");
  20. subMenu1.add(, , , "菜单项13");
  21.  
  22. subMenu2.add(, , , "菜单项21");
  23. subMenu2.add(, , , "菜单项22");
  24.  
  25. subMenu3.add(, , , "菜单项33");
  26.  
  27. return super.onCreateOptionsMenu(menu);
  28. }
  29.  
  30. @Override
  31. public boolean onOptionsItemSelected(MenuItem item) {
  32. switch (item.getItemId()) {
  33. case :
  34. Toast.makeText(this, "执行添加", ).show();
  35. break;
  36. case :
  37. Toast.makeText(this, "执行修改", ).show();
  38. break;
  39. case :
  40. Toast.makeText(this, "执行查询", ).show();
  41. break;
  42. case :
  43. Toast.makeText(this, "执行删除", ).show();
  44. break;
  45.  
  46. }
  47. return super.onOptionsItemSelected(item);
  48. }
  49.  
  50. }

对于add(int groupId,int itemId,int order, int titleRes);参数解释

groupid表示某个菜单项组,也就是这个菜单项位于哪个组中,itemId用于在回调函数标示一个菜单项,order显示顺序,title是一个标题; 对于addSubMenu()参数和这个类似

2.上下文菜单Contextmenu

  1. public class MainActivity2 extends Activity {
  2.  
  3. @Override
  4. public void onCreate(Bundle savedInstanceState) {
  5. super.onCreate(savedInstanceState);
  6. setContentView(R.layout.main2);
  7.  
  8. String[] names = new String[] { "zhangsan", "lisi", "wangwu", "zhaoliu" };
  9.  
  10. ListView lv = (ListView) findViewById(R.id.lv);
  11.  
  12. lv.setAdapter(new ArrayAdapter<String>(this,
  13. android.R.layout.simple_expandable_list_item_1,
  14. names));
  15.  
  16. //步骤1给listview注册上下午菜单
  17. registerForContextMenu(lv);
  18. }
  19.  
  20. // 步骤2重写onCreateContextMenu创建上下文菜单
  21. @Override
  22. public void onCreateContextMenu(ContextMenu menu, View v,
  23. ContextMenuInfo menuInfo) {
  24. super.onCreateContextMenu(menu, v, menuInfo);
  25. MenuInflater inflater = getMenuInflater();
  26. inflater.inflate(R.menu.context_menu, menu);
  27. }
  28.  
  29. // 步骤3在res/menu/创建context_menu.xml
  30.  
  31. // 步骤4重写onContextItemSelected执行点击事件
  32. @Override
  33. public boolean onContextItemSelected(MenuItem item) {
  34. AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
  35. .getMenuInfo();
  36. switch (item.getItemId()) {
  37. default:
  38. return super.onContextItemSelected(item);
  39. }
  40. }
  41.  
  42. }

主布局文件很简单,就一个Listview,不在给出
context_menu.xml文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <menu xmlns:android="http://schemas.android.com/apk/res/android" >
  3.  
  4. <item android:id="@+id/update_name" android:title="更改姓名"/>
  5. <item android:id="@+id/update_delete" android:title="删除姓名"/>
  6. </menu>

当长点击listview的一个条目时的效果图

android中的菜单Menu的更多相关文章

  1. android中常用菜单(menu)的基本知识

    (一)选项菜单 1.简单的创建菜单: @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMe ...

  2. Android中的菜单

    本文参考自官方文档:https://developer.android.com/guide/topics/ui/menus.html Android为了维护app之间一个统一的操作习惯,提供了Menu ...

  3. Android中创建option menu

    1.首先在res目录下新建一个menu文件夹,右击res目录->New->Directory,输入文件夹名menu,点击OK. 接着在这个文件夹下再新建一个名叫main的菜单文件,右击me ...

  4. Android 中的菜单 OptionsMenu的简单应用

    OptionsMenu就是安卓手机中的菜单选项 首先 要实现对菜单的操作就要先重写OnCreateOptionsMenu(Menu menu)方法 通常有两种方法来实现对菜单中选项的添加 第一种是动态 ...

  5. 关于android中,菜单按钮点击事件首次执行之后再次执行需要双击按钮的问题

    有时候在获取事件的时候,需要双击才能获取,解决方法很简单,把返回值设为true,那么这个事件就不会再分发了,我预计是设为其他值会继续分发,造成事件的相应混乱

  6. 【转】Android菜单详解——理解android中的Menu--不错

    原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...

  7. Android——菜单(Menu)

    菜单的运用在Android中很常见,今天就两节体育课,闲下来也想认真的学一学,正好项目中也会有应用.我是跟着菜鸟教程进行学习的,我相应的粘了一些我自己认为比较重要的,以供方便记录学习. 本章给大家带来 ...

  8. android中使用toolbar

    系统默认使用的是ActionBar,就是界面中的标题栏,但是由于ActionBar设计的原因,被限定只能位于活动的顶部,从而不能实现Material Design效果,所以官方建议使用Toolbar替 ...

  9. Android中创建PopupMenu弹出式菜单

    之前写过一篇创建option menu的文章:Android中创建option menu 本文主要是讲如何创建PopupMenu弹出式菜单 1.首先创建menu文件menu2.xml: <?xm ...

随机推荐

  1. Cookie&Session

    Cookie&Session 背景:Cookie和Session的原理.作用及如何设置和相关面试. 一.诞生背景 HTTP是无状态的,即服务器无法知道两个请求是否来自同一个浏览器,也就是服务器 ...

  2. 100天搞定机器学习|Day23-25 决策树及Python实现

    算法部分不再细讲,之前发过很多: [算法系列]决策树 决策树(Decision Tree)ID3算法 决策树(Decision Tree)C4.5算法 决策树(Decision Tree)CART算法 ...

  3. 100天搞定机器学习|Day 30-32 微积分的本质

    3blue1brown系列课程,精美的动画,配上生动的讲解,非常适合帮助建立数学的形象思维,非常值得反复观看: http://www.3blue1brown.com/ 哔哩哔哩: https://sp ...

  4. C# 一个计算器功能实现引发的思考

    一.需求 计算器功能需求,这个众所周知,很明确了. 二.步骤分析 1)初级实现计算器 static int Calculator(int a,int b,string str) { switch(st ...

  5. P3195 [HNOI2008]玩具装箱TOY 斜率优化dp

    传送门:https://www.luogu.org/problem/P3195 题目描述 P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压缩,其可以将任 ...

  6. Genymotion 启动app闪退解决方案

    1.之前安装Genymotion后,无法联网下载模拟器 解决方法:下载ova离线包,导入即可 2.启动app,一直处于闪退状态 解决方案: 进入BIOS----->Configuration-- ...

  7. 【原创】关于DNS不得不说的一些事

    引言 今天我们来聊聊DNS. 所谓域名系统(Domain Name System缩写DNS,Domain Name被译为域名)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据 ...

  8. 《Java 8 in Action》Chapter 4:引入流

    1. 流简介 流是Java API的新成员,它允许你以声明性方式处理数据集合(通过查询语句来表达,而不是临时编写一个实现).就现在来说,你可以把它们看成遍历数据集的高级迭代器.此外,流还可以透明地并行 ...

  9. Nacos(五):多环境下如何“读取”Nacos中相应的配置

    前言 前景回顾: Nacos(四):SpringCloud项目中接入Nacos作为配置中心 Nacos(三):Nacos与OpenFeign的对接使用 Nacos(二):SpringCloud项目中接 ...

  10. Flink的Job启动JobManager端(源码分析)

    通过前面的文章了解到 Driver将用户代码转换成streamGraph再转换成Jobgraph后向Jobmanager端提交 JobManager启动以后会在Dispatcher.java起来RPC ...