今天班级同学聚餐,真的是喝的有点多,本来计划今天要完成这篇博客。有点喝多了,写的不好请见谅。想仔细了解的话,看官网说的,是中文的。
https://developer.android.com/guide/topics/ui/menus.html

选项菜单

> 只要重写onCreateOptionsMenu()方法即可

MainActivity.java代码如下:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//四个参数的含义。1,group的id,2,item的id,3,是否排序,4,将要显示的内容menu.add(0,1,0,"菜单一");menu.add(0,2,0,"菜单二");menu.add(0,3,0,"菜单三");menu.add(0,4,0,"菜单四");return true;}
}

运行效果

接下来为菜单添加点击事件,需要重写onOptionsItemSelected()方法。

MainActivity.java代码如下:


import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//四个参数的含义。1,group的id,2,item的id,3,是否排序,4,将要显示的内容menu.add(0,1,0,"菜单一");menu.add(0,2,0,"菜单二");menu.add(0,3,0,"菜单三");menu.add(0,4,0,"菜单四");return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case 1:Toast.makeText(MainActivity.this,"菜单一",Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this,"菜单二",Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this,"菜单三",Toast.LENGTH_SHORT).show();break;case 4:Toast.makeText(MainActivity.this,"菜单四",Toast.LENGTH_SHORT).show();break;}return true;}
}

运行效果

子菜单

只要在onCreateOptionsMenu()方法中添加
SubMenu sub=menu.addSubMenu(“子菜单”);
sub.add(0,5,0,”子菜单一”);
sub.add(0,6,0,”子菜单二”);
sub.add(0,7,0,”子菜单三”);
然后再为子菜单添加点击事件。

MainActivity.java全部代码如下

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//四个参数的含义。1,group的id,2,item的id,3,是否排序,4,将要显示的内容menu.add(0,1,0,"菜单一");menu.add(0,2,0,"菜单二");menu.add(0,3,0,"菜单三");menu.add(0,4,0,"菜单四");SubMenu sub=menu.addSubMenu("子菜单");sub.add(0,5,0,"子菜单一");sub.add(0,6,0,"子菜单二");sub.add(0,7,0,"子菜单三");return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case 1:Toast.makeText(MainActivity.this,"菜单一",Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this,"菜单二",Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this,"菜单三",Toast.LENGTH_SHORT).show();break;case 4:Toast.makeText(MainActivity.this,"菜单四",Toast.LENGTH_SHORT).show();break;case 5:Toast.makeText(MainActivity.this,"子菜单一",Toast.LENGTH_SHORT).show();break;case 6:Toast.makeText(MainActivity.this,"子菜单二",Toast.LENGTH_SHORT).show();break;case 7:Toast.makeText(MainActivity.this,"子菜单三",Toast.LENGTH_SHORT).show();break;}return true;}
}

上下文菜单

只要重写这个方法onCreateContextMenu()如果在为它添加点击事件,就需要再重写onContextItemSelected()方法

MainActivity.java代码如下:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private TextView mTv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTv = (TextView) findViewById(R.id.tv);registerForContextMenu(mTv);//为mTv注册事件}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//四个参数的含义。1,group的id,2,item的id,3,是否排序,4,将要显示的内容menu.add(0, 1, 0, "菜单一");menu.add(0, 2, 0, "菜单二");menu.add(0, 3, 0, "菜单三");menu.add(0, 4, 0, "菜单四");SubMenu sub = menu.addSubMenu("子菜单");sub.add(0, 5, 0, "子菜单一");sub.add(0, 6, 0, "子菜单二");sub.add(0, 7, 0, "子菜单三");return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case 1:Toast.makeText(MainActivity.this, "菜单一", Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this, "菜单二", Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this, "菜单三", Toast.LENGTH_SHORT).show();break;case 4:Toast.makeText(MainActivity.this, "菜单四", Toast.LENGTH_SHORT).show();break;case 5:Toast.makeText(MainActivity.this, "子菜单一", Toast.LENGTH_SHORT).show();break;case 6:Toast.makeText(MainActivity.this, "子菜单二", Toast.LENGTH_SHORT).show();break;case 7:Toast.makeText(MainActivity.this, "子菜单三", Toast.LENGTH_SHORT).show();break;}return true;}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {if (v == mTv) {menu.add(0, 1, 0, "上下文菜单一");menu.add(0, 2, 0, "上下文菜单二");menu.add(0, 3, 0, "上下文菜单三");}super.onCreateContextMenu(menu, v, menuInfo);}@Overridepublic boolean onContextItemSelected(MenuItem item) {switch (item.getItemId()) {case 1:Toast.makeText(MainActivity.this, "上下文菜单一", Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this, "上下文菜单二", Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this, "上下文菜单三", Toast.LENGTH_SHORT).show();break;}return true;}
}

需要长按Textview才行,运行结果,

选项菜单,子菜单,上下文菜单基本使用方法基本就演示完了。
其实也可以写布局文件,直接加载布局文件也行,下面我们就演示下吧。

menu中菜单代码如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><group android:id="@+id/group"><item
            android:id="group_one"android:title="选项菜单一"></item><item
            android:id="group_two"android:title="选项菜单二"></item><item
            android:id="group_three"android:title="选项菜单三"></item><item
            android:id="group_four"android:title="选项菜单四"><menu><item
                    android:id="child_one"android:title="子菜单一"></item><item
                    android:id="child_two"android:title="子菜单二"></item><item
                    android:id="child_three"android:title="子菜单三"></item></menu></item></group>
</menu>

MainActivity.java代码如下:

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private TextView mTv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTv = (TextView) findViewById(R.id.tv);registerForContextMenu(mTv);//为mTv注册事件}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//四个参数的含义。1,group的id,2,item的id,3,是否排序,4,将要显示的内容
//        menu.add(0, 1, 0, "菜单一");
//        menu.add(0, 2, 0, "菜单二");
//        menu.add(0, 3, 0, "菜单三");
//        menu.add(0, 4, 0, "菜单四");
//        SubMenu sub = menu.addSubMenu("子菜单");
//        sub.add(0, 5, 0, "子菜单一");
//        sub.add(0, 6, 0, "子菜单二");
//        sub.add(0, 7, 0, "子菜单三");getMenuInflater().inflate(R.menu.item_menu,menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.group_one:Toast.makeText(MainActivity.this, "菜单一", Toast.LENGTH_SHORT).show();break;case R.id.group_two:Toast.makeText(MainActivity.this, "菜单二", Toast.LENGTH_SHORT).show();break;case R.id.group_three:Toast.makeText(MainActivity.this, "菜单三", Toast.LENGTH_SHORT).show();break;case R.id.group_four:Toast.makeText(MainActivity.this, "菜单四", Toast.LENGTH_SHORT).show();break;case R.id.child_one:Toast.makeText(MainActivity.this, "子菜单一", Toast.LENGTH_SHORT).show();break;case R.id.child_two:Toast.makeText(MainActivity.this, "子菜单二", Toast.LENGTH_SHORT).show();break;case R.id.child_three:Toast.makeText(MainActivity.this, "子菜单三", Toast.LENGTH_SHORT).show();break;}return true;}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {if (v == mTv) {menu.add(0, 1, 0, "上下文菜单一");menu.add(0, 2, 0, "上下文菜单二");menu.add(0, 3, 0, "上下文菜单三");}super.onCreateContextMenu(menu, v, menuInfo);}@Overridepublic boolean onContextItemSelected(MenuItem item) {switch (item.getItemId()) {case 1:Toast.makeText(MainActivity.this, "上下文菜单一", Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this, "上下文菜单二", Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this, "上下文菜单三", Toast.LENGTH_SHORT).show();break;}return true;}
}

运行效果还是跟前面的选项菜单一样。只是数据来自menu中

运行结果:

总结

其实这三种菜单不难,只要按照写一遍就会了。

源码下载

https://github.com/songshuilin/AndroidForBlog/tree/master/androidformenu

android之三大菜单(子菜单,选项菜单,上下文菜单)相关推荐

  1. android菜单详解三:上下文菜单

    创建一个上下文菜单 一个上下文菜单跟PC上的右键菜单类似.你应使用上下文菜单为用户界面上的某个部分提供动作选择功能.在Android中,一个上下文菜单会在用户长按一个界面条目时出现. 你可以为任何Vi ...

  2. 【Android基础知识】选项菜单、上下文菜单、子菜单的使用

    Android菜单类型 菜单是为了增加更多的功能,不占用屏幕的空间.Android中菜单类型有三类,选项菜单(OptionMenu).上下文菜单(ContextMenu).子菜单(SubMenu),下 ...

  3. Android Menu,OptionMenu选项菜单,ContextMenu上下文菜单,Contextual ActionMode,PopUp Menu,PopU pWi ndow

    Android Menu 一.Opti onMenu选项菜单: (一).简介: 1.A ndroi d应用中的菜单默认是隐藏的,只有当用户点击手机上的ME NU 键,系统才会显示菜单.这种菜单叫做选项 ...

  4. Android 上下文菜单(Context Menu)

    一.概述 Android中,上下文菜单是通过onLongClick(...)事件访问的.在事件触发后显示菜单项. 在使用上下文菜单时,通常在onCreate(...)方法中,先行注册上下文菜单.在实现 ...

  5. Android开发——菜单(Menu)-——上下文菜单(ContextMenu)、 弹出菜单(PopupMenu)

    上下文菜单(ContextMenu) 长按某个view不放,就会在屏幕中间弹出ContextMenu. 一个Activity中间只可能有一个OptionMenu,但一个Activity中间有多个Vie ...

  6. 【Android】上下文菜单ContextMenu的使用

    上下文菜单 又称长按菜单.当一个视图注册了上下文菜单时,执行一个在该对象上长按(2秒)的动作,将出现一个具有相关功能的浮动菜单. 类概述 扩展自Menu的上下文菜单提供了修改上下文菜单头(header ...

  7. java contextmenu_安卓开发_浅谈ContextMenu(上下文菜单)

    长下文菜单,即长按view显示一个菜单栏 与OptionMenu的区别 OptionMenu对应的是activity,一个activity只能拥有一个选项菜单 ContextMenu对应的是View, ...

  8. 图像处理工具包ImagXpress中如何设置上下文菜单

    ImagXpress 是世界上最先进的彩色映像和照片图像处理工具包,有着.NET.COM.VC三种组件形式.ImagXpress可以为开发者构建的应用程序提供图像浏览.编辑.打印.TWAIN扫描.文件 ...

  9. Android菜单:选项菜单+上下文菜单+子菜单

    菜单是人机交互的重要接口,在 Android SDK 中,提供了菜单类 android.view.Menu,以完成与菜单有关的操作. Android SDK 提供三种菜单,分别如下. 1)Option ...

最新文章

  1. 跟我学Springboot开发后端管理系统4:数据库连接池Druid和HikariCP
  2. 习题7-6 统计大写辅音字母 (15 分)
  3. LoadRunner SQL 2008
  4. 如何判断当前主机是物理机还是虚拟机
  5. 终于弄明白Framework 3.5为什么在IIS的ASP.NET选项找不到?
  6. 牛客网学习笔记-day01
  7. UML 类之间的几种关系
  8. HTTP标准相关的基础概念
  9. 记得重用layout
  10. Java并发编程实战~生产者-消费者模式
  11. 搭建私有helm仓库及图形界面
  12. 通过NGINX location实现一个域名访问多个项目
  13. ABI 大屏(示例布局)
  14. 专栏 | 是什么成就了中国最具创新力的公司,帮他们的超脑计划孵出阿尔法蛋?...
  15. 身份认证设计的基本准则
  16. 读取SD卡文件夹下的MP3文件和播放MP3文件
  17. 列车控制matlab仿真,基于matlab的列车纵向碰撞建模仿真研究
  18. ReportMachine如何导出PDF文档?
  19. Scala安装和开发环境配置教程
  20. 15个免费学习JavaScript的最佳网站

热门文章

  1. 商品管理系统--分类、品牌、属性、商品、价格、图片管理
  2. whoami靶场渗透测试
  3. Java Collection接口
  4. NetAppp SP sensors 输出内容解读
  5. python学习笔记3:lambda函数的解析和使用
  6. Android 小应用之一个activity实现简易手电筒(内附免费源码)
  7. 【HEC-RAS】基础入门介绍教程-初步原理01
  8. 智能网联汽车自动驾驶仿真技术学习笔记(一)
  9. ubuntu多用户环境
  10. P2P公司不良贷款的催收 不问过程只看结果