Android应用开发之Android中的基本控件——菜单:Menu 解析
白羽 2018-12-19 来源 :网络 阅读 186 评论 0

摘要:本文将带你了解Android应用开发Android中的基本控件——菜单:Menu 解析,希望本文对大家学Android有所帮助。

    本文将带你了解Android应用开发Android中的基本控件——菜单:Menu 解析,希望本文对大家学Android有所帮助。


        

Android中的基本控件——菜单:Menu 解析

菜单在系统的开发之中是必不可少的一种组件,在Android手机上往往都会存在一个“Menu”的键当选择之后会在屏幕的底部显示系统的菜单,在一个菜单之中可以包含多个菜(MenuItem),在一个菜单之中最多只会显示2排3列的菜单项,如果现在的菜单项超出了6个,则超出部分会自动隐藏,而且会自动出现一个“更多”的菜单项提示用户。

在Android系统之中,菜单一共有三类:选项菜单(OptionsMenu)、上下文(ContextMenu)和子菜单(SubMenu)。

Activity类中定义的菜单操作方法

                                                                                    

  No.

  方法

  类型

  描述

1    public void closeContextMenu()    普通    关闭上下文菜单    

2    public void closeOptionsMenu()    普通    关闭选项菜单    

3    public void closeOptionsMenu()    普通    设置上下文菜单项    

4    public void onContextMenuClosed(Menu menu)    普通    上下文菜单关闭时触发    

5    public void onContextMenuClosed(Menu menu)    普通    创建上下文菜单    

6    public void onCreateContextMenu(ContextMenu menu,View v,ContextMenu.ContextMenuInfo menuInfo)    普通    当用户选择“Menu”按钮时调用此操作,可以生成一个选项菜单    

7    public booleanonMenuItemSelected(int featureId, MenuItem item)    普通    设置选项菜单项    

8    public booleanonOptionsItemSelected(MenuItem item)    普通    当一个选项菜单中的某个菜单项被选中时触发此操作    

9    public void onOptionsMenuClosed(Menu menu)    普通    当选项菜单关闭时触发此操作    

10    public boolean onPrepareOptionsMenu(Menu menu)    普通    当选项菜单显示之前操作触发此操作    

11    public void openOptionsMenu()    普通    打开选项菜单    

12    public MenuInflater getMenuInflater()    普通    取得MenuInflater类的对象    

13    public void registerForContextMenu(View view)    普通    注册上下文菜单    

Menu接口的常用方法及常量

                                                                              

  No.

  方法及常量

  类型

  描述

1    public static final int FIRST    常量    用于定义菜单项的编号    

2    public static final int NONE    常量    表示菜单不分组    

3    public abstract MenuItem add(int groupId, int itemId, int order,CharSequence title)    普通    此方法用于向菜单之中添加菜单项,参数作用: groupId:菜单所在的组编号;
 itemId:菜单项的ID;order:菜单的出现顺序;title:菜单的显示文字。    

4    public abstract MenuItem add(int groupId, int itemId, int order, int titleRes)    普通    增加菜单项    

5    public abstract SubMenu addSubMenu(int groupId, int itemId, int order, int titleRes)    普通    增加子菜单    

6    public abstract SubMenu addSubMenu(int groupId, int itemId, int order, CharSequence title)    普通    增加子菜单    

7    public abstract void removeGroup(int groupId)    普通    删除一个菜单组    

8    public abstract void removeItem(int id)    普通    删除一个菜单项    

9    public abstract void clear()    普通    清空菜单    

10    public abstract void close()    普通    关闭菜单    

11    public abstract MenuItem getItem(int index)    普通    返回指定的菜单项    

12    public abstract int size()    普通    返回菜单项的个数    

MenuItem接口的常用方法

                                                                                                                        

  No.

  方法及常量

  类型

  描述

1    public abstract int getGroupId()    普通    得到菜单组编号    

2    public abstract Drawable getIcon()    普通    得到菜单项上的图标    

3    public abstract int getItemId()    普通    得到菜单项上的ID    

4    public abstract int getOrder()    普通    得到菜单项上的编号    

5    public abstract SubMenu getSubMenu()    普通    取得子菜单    

6    public abstract CharSequence getTitle()    普通    得到菜单项上的标题    

7    public abstract boolean isCheckable()    通    判断菜单项是否可用    

8    ublic abstract boolean isChecked()    普通    判断此菜单项是否被选中    

9    public abstract boolean isEnabled()    普通    判断此菜单项是否可用    

10    public abstract boolean isVisible()    普通    判断此菜单项是否可见    

11    public abstract MenuItem setCheckable(boolean checkable)    普通    设置此菜单项是否可用    

12    public abstract MenuItem setChecked(boolean checked)    普通    设置此菜单项是否默认选中    

13    public abstract MenuItem setEnabled(boolean enabled)    普通    设置此菜单项是否可用    

14    public abstract MenuItem setIcon(Drawable icon)    普通    设置此菜单项的图标    

15    public abstract MenuItem setIcon(int iconRes)    普通    设置此菜单项的图标    

16    public abstract Menu ItemsetOnMenuItemClickListener (MenuItem.OnMenuItemClic kListener menuItemClickListener)    普通    设置此菜单项的监听操作    

17    public abstract MenuItem setTitle(CharSequence title)    普通    设置此菜单项的标题    

18    public abstract MenuItem setVisible(boolean visible)    普通    设置此菜单项是否可见    

19    public abstract ContextMenu.ContextMenuInfo getMenuInfo()    普通    得到菜单中的内容    

选项菜单:OptionsMenu

选项菜单是一个最基本的菜单,也是用户在使用手机时最常见的一种形式,如果要想实现选项菜单,则直接在程序之中覆写android.app.Activity类的如下几个方法:

public boolean onCreateOptionsMenu(Menu menu):在此方法之中设置多个菜单项(MenuItem); 返回值:返回true表示显示菜单,反之则不显示; public boolean onOptionsItemSelected(MenuItem item):在此方法之中判断菜单项的操作; public void onOptionsMenuClosed(Menu menu):当菜单关闭时触发此操作; public boolean onPrepareOptionsMenu(Menu menu):在菜单显示前触发此操作;

在main.xml文件之中定义要显示的组件


   

<!--?xml version="1.0" encoding="utf-8"?-->

<linearlayout --="">

 xmlns:android="https://schemas.android.com/apk/res/android"

 android:id="@+id/MyLayout"  <!---布局管理器ID---->

 android:orientation="vertical" <!---所有组件垂直摆放---->

 android:layout_width="fill_parent" <!---布局管理器宽度为屏幕宽度---->

 android:layout_height="fill_parent"><!---布局管理器高度为屏幕高度---->

 <textview --="">

  android:id="@+id/txt"  <!---组件ID,程序中使用---->

  android:layout_width="wrap_content"  <!---组件宽度为文字宽度---->

  android:layout_height="wrap_content"  <!---组件高度为文字高度---->

  android:text="按下Menu键出现选项菜单"/><!---默认显示文字---->

</textview></linearlayout>

   

定义Activity程序,覆写相应方法以实现菜单的显示


   

package org.lxh.demo;

import android.app.Activity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.Toast;

public class MyMenuDemo extends Activity {

 @Override

 public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  super.setContentView(R.layout.main);

 }

 @Override

 public boolean onCreateOptionsMenu(Menu menu) {  // 显示菜单

  menu.add(Menu.NONE, // 菜单不分组

Menu.FIRST + 1, // 菜单项ID

5, // 菜单编号

"删除")  // 显示标题

.setIcon(android.R.drawable.ic_menu_delete); // 设置图标

  menu.add(Menu.NONE, Menu.FIRST + 2, 2, "保存").setIcon(

 android.R.drawable.ic_menu_save);// 设置菜单项

  menu.add(Menu.NONE, Menu.FIRST + 3, 6, "帮助").setIcon(

 android.R.drawable.ic_menu_help);// 设置菜单项

  menu.add(Menu.NONE, Menu.FIRST + 4, 1, "添加").setIcon(

 android.R.drawable.ic_menu_add); // 设置菜单项

  menu.add(Menu.NONE, Menu.FIRST + 5, 4, "详细").setIcon(

 android.R.drawable.ic_menu_info_details);// 设置菜单项

  menu.add(Menu.NONE, Menu.FIRST + 6, 7, "发送").setIcon(

 android.R.drawable.ic_menu_send);// 设置菜单项

  menu.add(Menu.NONE, Menu.FIRST + 7, 3, "编辑").setIcon(

 android.R.drawable.ic_menu_edit);// 设置菜单项

  return true;  // 菜单显示

 }

@Override

 public boolean onOptionsItemSelected(MenuItem item) { // 选中某个菜单项

  switch (item.getItemId()) {  // 判断菜单项ID

  case Menu.FIRST + 1:

Toast.makeText(this, "您选择的是“删除菜单”项。", Toast.LENGTH_LONG).show();

break;

  case Menu.FIRST + 2:

Toast.makeText(this, "您选择的是“保存菜单”项。", Toast.LENGTH_LONG).show();

break;

  case Menu.FIRST + 3:

Toast.makeText(this, "您选择的是“帮助菜单”项。", Toast.LENGTH_LONG).show();

break;

  case Menu.FIRST + 4:

Toast.makeText(this, "您选择的是“添加菜单”项。", Toast.LENGTH_LONG).show();

break;

  case Menu.FIRST + 5:

Toast.makeText(this, "您选择的是“详细菜单”项。", Toast.LENGTH_LONG).show();

break;

  case Menu.FIRST + 6:

Toast.makeText(this, "您选择的是“发送菜单”项。", Toast.LENGTH_LONG).show();

break;

  case Menu.FIRST + 7:

Toast.makeText(this, "您选择的是“设置菜单”项。", Toast.LENGTH_LONG).show();

break;

  }return false;

 }@Override

 public void onOptionsMenuClosed(Menu menu) {  // 菜单退出时调用

  Toast.makeText(this, "选项菜单关闭了", Toast.LENGTH_LONG).show();

 }@Override

 public boolean onPrepareOptionsMenu(Menu menu) { // 菜单显示前调用

  Toast.makeText(this,"在菜单显示(onCreateOptionsMenu()方法)之前会调用此操作,可以在此操作之中完成一些预处理操作。",Toast.LENGTH_LONG).show();

  return true; // 调用onCreateOptionsMenu()

 }

}

   

在配置文件中配置菜单项 —— res/menu/mymenu.xml


   

<!--?xml version="1.0" encoding="utf-8"?-->

   

  

MenuInflater

配置文件之中通过“”元素定义了多个菜单项,而这些菜单项中的内容与之前的程序代码是一样的,此时如果希望从配置文件之中取出数据,则修改onCreateOptionsMenu()方法,但是在编写此方法的时候需要使用到Activity类中的getMenuInflater()方法先取得MenuInflater类的对象,此类的功能也是将配置文件中定义的组件进行实例化,常用方法如下:                  

  No.

  方法

  类型

  描述

1    public MenuInflater(Context context)    构造    创建MenuInflater类对象    

2    public void inflate(int menuRes, Menu menu)    普通    将配置的资源填充到菜单之中    

修改onCreateOptionsMenu()`


   

public boolean onCreateOptionsMenu(Menu menu) {  // 显示菜单

 super.getMenuInflater().inflate(R.menu.mymenu, menu);//填充菜单项

 return true; // 菜单显示

 }

   

上下文菜单:ContextMenu

上下文菜单非常类似于在windows操作系统中的右键菜单的操作形式,在使用支持Android操作系统手机时,如果在一个列表显示(ListView)操作中,用户可以通过长按操作打开某些操作的菜单,而这种菜单就是上下文菜单,要进行上下文菜单的操作只需要在Activity程序之中覆写如下方法即可: public void onCreateContextMenu(ContextMenu menu, View v ,ContextMenu. ContextMenuInfo menuInfo):在此方法之中可以设置所需要显示的所有菜单项; public boolean onContextItemSelected(MenuItem item):当某一个菜单项被选中时触发此操作; public void onContextMenuClosed(Menu menu):当菜单项关闭时触发此操作。

定义Activity程序,显示上下文菜单

    

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!


本文由 @白羽 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程