今天学习一下菜单组件,在Android中的菜单中有三种①:OptionMenu(选项菜单)②:ContextMenu(上下文菜单) ③:SubMenu(子菜单)

下面分别来学一下

一:OptionMenu(选项菜单) 当我们使用手机的时候,按着手机上面的Menu,弹出的菜单就是选项菜单。但是我们一次性能显示菜单选项只能是6个

如果我们设置的超过6个时候,第六个菜单选项会自动设置成更多,然后我们点击更多的时候,剩下来的选项菜单就会选项.。先看下选项菜单的测试截图

下面我们来创建一个选项菜单,步骤如下:

①:先去覆盖Activity中的onCreateOptionsMenu(),但是这个方法只会在第一次调用的时候会被实例化,当实例化时候,就不会在被调用了

②:调用add()来添加菜单选项.add(groupId, itemId, order, titleRes)方法中个参数的意思是,

*      @param group
 *            : 选项组号,一般都设置成0就OK啦
 * @param itenId
 *            : 选项的Id 很重要
 * @param order
 *            :顺序,一般来说都设置0就行了
 * @param titelRes
 *            : 选项的标题名字
 */

③:覆盖onCreateOptionsMenu(Menu menu)menu.getItemId()来获取选项的Id

下面来看下Demo源代码:

package com.jiangqq.menu;  import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast;  /**  * ①:直接去覆盖public boolean onCreateOptionsMenu(Menu menu) { code......},  *   这个方法,需要注意的是,这个方法如果覆盖的了,只会被创建一次,也就是说, 选项菜单只会去被实例化一次,,,之后就不会被去调用了  * ②:调用Menu中的add()方法,来添加每一个菜单选项, add(groupId, itemId, order, titleRes) group:  *     选项组号,一般都设置成0就OK啦 itenId: 选项的Id 很重要 order:顺序,一般来说都设置0就行了 titelRes: 选项的标题名字  * ③:当我们去点击某项的选项的时候,覆盖重写onOptionsItemSelected(MenuItem item)这个方法去实现点击事件  *   * @author jiangqq  *   */ public class Option_Menu_Activity extends Activity {   // 点击菜单选项的常量Id  private static final int menu1 = 1;    private static final int menu2 = 2;    private static final int menu3 = 3;    private static final int menu4 = 4;    private static final int menu5 = 5;    private static final int menu6 = 6;    private static final int menu7 = 7;    public void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);         setContentView(R.layout.main);      }   /**      * @param group     *            : 选项组号,一般都设置成0就OK啦      * @param itenId    *            : 选项的Id 很重要    * @param order     *            :顺序,一般来说都设置0就行了     * @param titelRes      *            : 选项的标题名字      */     public boolean onCreateOptionsMenu(Menu menu) {         menu.add(0, menu1, 0, "Menu1");       menu.add(0, menu2, 0, "Menu2");       menu.add(0, menu3, 0, "Menu3");       menu.add(0, menu4, 0, "Menu4");       menu.add(0, menu5, 0, "Menu5");       menu.add(0, menu6, 0, "Menu6");       menu.add(0, menu7, 0, "Menu7");       return true;    }   /**      *       * @param item      *            .getItemId() 获取被点击的Id      */     public boolean onOptionsItemSelected(MenuItem item) {       switch (item.getItemId()) {         case menu1:             Toast.makeText(this, "你点击Menu1", Toast.LENGTH_LONG).show();           break;      case menu2:             Toast.makeText(this, "你点击Menu2", Toast.LENGTH_LONG).show();           break;      case menu3:             Toast.makeText(this, "你点击Menu3", Toast.LENGTH_LONG).show();           break;      case menu4:             Toast.makeText(this, "你点击Menu4", Toast.LENGTH_LONG).show();           break;      case menu5:             Toast.makeText(this, "你点击Menu5", Toast.LENGTH_LONG).show();           break;      case menu6:             Toast.makeText(this, "你点击Menu6", Toast.LENGTH_LONG).show();           break;      case menu7:             Toast.makeText(this, "你点击Menu7", Toast.LENGTH_LONG).show();           break;      }       return true;    } }

二:SubMenu(子菜单)

平时我们希望把同一类型的菜单进行分级来显示,这时候我们会用SubMenu.下面的Demo,是创建两个菜单选项,当点击Menu3的时候 会弹出menu1和menu2的菜单

创建一个SubMenu的基本步骤如下

①: 先去覆盖Activity中的onCreateOptionsMenu()

②:调用addSubMenu()来添加子菜单项,然后调用add()来添加子菜单

③:覆盖onCreateOptionsMenu(Menu menu)menu.getItemId()来获取选项的Id,去响应单击事件

下面是源代码:

package com.jiangqq.menu;  import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.SubMenu; import android.widget.Toast;  public class Sub_Menu_Activity extends Activity {   private static final int menu3 = 3;    private static final int menu4 = 4;    private static final int menu1 = 1;    private static final int menu2 = 2;    @Override  protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub      super.onCreate(savedInstanceState);         setContentView(R.layout.sub);   }   @Override  public boolean onCreateOptionsMenu(Menu menu) {         SubMenu M3 = menu.addSubMenu("Menu3");       SubMenu M4 = menu.addSubMenu("Menu4");       M3.add(0, menu1, 0, "Menu1");         M3.add(0, menu2, 0, "Menu2");         return true;    }   @Override  public boolean onOptionsItemSelected(MenuItem item) {       switch (item.getItemId()) {         case menu1:             Toast.makeText(this, "你点击的是Menu1", Toast.LENGTH_LONG).show();             break;      case menu2:             Toast.makeText(this, "你点击的是Menu2", Toast.LENGTH_LONG).show();             break;          }       return true;    }  } 

截图显示:

三:ContexgMenu(上下文菜单)

首先什么是上下文菜单,当我们长时间按住屏幕的时候,会弹出菜单,那个就是ContextMenu();

看先文档中对创建ContextMenu()的方法:

To show a context menu on long click, most clients will want to call registerForContextMenu(View) and override onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo).

【注】 长按按钮,来显示上下文菜单我们必须要去调用  registerForContextMenu(View) ,onCreateContextMenu(ContextMenu, View, ContextMenu.ContextMenuInfo).

看下实现的源代码:

package com.jiangqq.menu;  import android.app.Activity; import android.os.Bundle; import android.view.ContextMenu; import android.view.ContextMenu.ContextMenuInfo; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast;  public class Context_Menu_Activity extends Activity {    private static final int menu1 = 1;    private static final int menu2 = 2;    private static final int menu3 = 3;    private TextView context_demo;      @Override  protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub      super.onCreate(savedInstanceState);         setContentView(R.layout.context);       context_demo = (TextView) this.findViewById(R.id.context_demo);        registerForContextMenu(context_demo);   }   @Override  public void onCreateContextMenu(ContextMenu menu, View v,           ContextMenuInfo menuInfo) {         super.onCreateContextMenu(menu, v, menuInfo);       menu.add(0, menu1, 0, "Menu1");       menu.add(0, menu2, 0, "Menu2");       menu.add(0, menu3, 0, "Menu3");   }   @Override  public boolean onContextItemSelected(MenuItem item) {       switch (item.getItemId()) {         case menu1:             Toast.makeText(this, "你 点击的是Menu1", Toast.LENGTH_LONG).show();            context_demo.setText("你点击的是Menu1");           break;          case menu2:             Toast.makeText(this, "你点击的是Menu2", Toast.LENGTH_LONG).show();             context_demo.setText("你点击的是Menu2");           break;      case menu3:             Toast.makeText(this, "你点击的是Menu3", Toast.LENGTH_LONG).show();             context_demo.setText("你点击的是Menu3");           break;      }       return true;    } } 

转载于:https://blog.51cto.com/2939716/1376495

Android中的Menu(菜单)的三种类型菜单的学习相关推荐

  1. android菜单的类型有几种,Android中的Menu(菜单)的三种类型菜单的学习

    今天学习一下菜单组件,在Android中的菜单中有三种①:OptionMenu(选项菜单)②:ContextMenu(上下文菜单) ③:SubMenu(子菜单) 下面分别来学一下 一:OptionMe ...

  2. mysql double 转 字符串_没想到!在MySQL数据库中的数据有这三种类型!

    MySQL数据库是一个或多个数据列构成二维表,它的每一种数据列都有特定类型,而类型决定MySQL是怎么看待该列数据,如果把整型数值存放到字符类型的列中,MySQL则会把它当成字符串来处理. MySQL ...

  3. c语言实现进程隐藏和保护,C/C++程序开发中实现信息隐藏的三种类型

    无论是模块化设计,还是面向对象设计,还是分层设计,实现子系统内部信息的对外隐藏都是最关键的内在要求.以本人浅显的经验,把信息隐藏按照程度的不同分成(1)不可见不可用(2)可见不可用(3)可见可用. 1 ...

  4. Android中设置文本颜色的三种方法

    2019独角兽企业重金招聘Python工程师标准>>> 1.利于系统自带的颜色类 如TextView1.setTextColor(Android.graphics.Color.RED ...

  5. android中获取打气筒服务的三种形式

    public View getView(int position, View convertView, ViewGroup parent) {//[1]想办法把我们自己定义的布局转换成一个view对象 ...

  6. Android中创建子线程的三种方式

    1.新建一个类继承自Thread,并重写run()方法,并在里面编写耗时逻辑. class ThreadTest extends Thread {@Overridepublic void run() ...

  7. Android菜单详解——理解android中的Menu

    前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...

  8. android 自定义menu 背景颜色,Android中设置Menu菜单的文字颜色为白色

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 开发者交流裙: 188168040 Android中设置Menu菜单的文字颜色为白色,一般情况下,Android中Menu菜单的title文字颜色为黑色, ...

  9. android onclick方法吗,Android中button的onClick事件几种方法

    Android中button的onClick事件几种方法 发布时间:2020-09-03 02:36:31 来源:脚本之家 阅读:100 作者:水桶前辈 Android中button的onClick事 ...

  10. android中的定时任务一般有两种机制,android 定时任务

    使用timertask进行定时任务 首先创建TimerTask: class SynchroTimerTask extends TimerTask { @Override public void ru ...

最新文章

  1. Python源码学习:内建类型简析并简析int对象
  2. Apache2.2提示Cannot load php5apache2.dll into server的的解决
  3. 子主题function php,wordpress子主题怎么添加
  4. Machine Learning on Spark—— 统计基础(一)
  5. java面向对象:关键字 —(16)
  6. 不同服务器数据库表连接查询修改,如何连接多个数据库,mysql中的服务器和查询两个表中的对方?...
  7. java 输出流_Java中输入输出流方法总结
  8. [转载] java注释
  9. 32位linux系统支持多大内存吗,linux32位操作系统支持大内存
  10. java阿里系学习经历的小小领悟
  11. python 鱼骨图_面向对象编程,鱼骨图分析法
  12. 前端 常用css总结
  13. 数据库SQL中的分钟表示应该使用MI(非常重要的一个问题,以前一直认为和java中一样,用mm就可以表示);校对规则(查询时区分大小写)
  14. 网络信号_如何用有线电视线传输网络信号
  15. gdb 调试打印完整字符串
  16. matlab 取符号函数,Matlab 符号表达式和符号函数的操作
  17. 激活ltsb2016_WIN10 LTSB 2016电话激活步骤详解
  18. redis和zk实现分布式锁的优缺点
  19. 最新YGBOOK小说站源码/全自动采集+已修BUG
  20. C语言顺序表,合并并排序(代码注释讲解)

热门文章

  1. JS调试设置断点却无法中断的解决
  2. python: ubuntu下把py2.7改成py3
  3. 2019基金行业变革之年
  4. (转)【特征工程】特征工程技术与方法
  5. 中国SaaS市场将快速增长,或形成“小而美”林立格局
  6. 云原生是一个时代下践行者们的故事
  7. 【图像重建】基于matlab卷积神经网络的图像超分辨率重建【含Matlab源码 1816期】
  8. 【故障分析】基于matlab轴承故障仿真信号时域波形图+幅度谱图【含Matlab源码 123期】
  9. android apk 在线分析,Android Apk安装过程解析
  10. 前端js使用java变量值_web前端:js中的变量