第一种方式,使用Java方式

第二种方式,使用menu.xml

package liudeli.activity;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast; public class MenuActivity extends Activity { private static final int MENU_ITEM_CREATE = 0;
private static final int MENU_ITEM_DELETE = 1; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
} /**
* 第一步:菜单选项
* 创建菜单
* @param menu
* @return
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
/************************* 第一种方式,使用Java方式 ****************************/
/**
* 参数一: 组号
* 参数二: 唯一的ID号
* 参数三: 排序号
* 参数四: 标题
*/
MenuItem menu_item_create = menu.add(0, MENU_ITEM_CREATE, 0, "新建"); // 设置是否可点
menu_item_create.setEnabled(true); // 设置图标,菜单有时候加载不出来,但是不会报错
menu_item_create.setIcon(android.R.drawable.ic_menu_camera); /**
* 参数一: 组号
* 参数二: 唯一的ID号
* 参数三: 排序号
* 参数四: 标题
*/
menu.add(0, MENU_ITEM_DELETE, 0, "删除"); /**
* 添加子菜单
*/
SubMenu subMenu = menu.addSubMenu("子菜单");
subMenu.add(0, 11, 0, "子菜单1");
subMenu.add(0, 12, 0, "子菜单2"); /************************* 第二种方式,使用menu.xml ****************************/
// 菜单加载器
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.menu, menu); /************************* menu说明 ****************************/ /*menu.add("菜单一"); // 添加菜单
menu.add(1, Menu.FIRST, Menu.FIRST, "菜单二"); // 添加菜单 带组号...
int group1 = 1;
int group2 = 2;
menu.add(group1, 1, 1, "item1");// 添加菜单 带组号...
menu.add(group1, 2, 2, "item2");// 添加菜单 带组号...
menu.add(group2, 3, 3, "item3");// 添加菜单 带组号...
menu.add(group2, 4, 4, "item4");// 添加菜单 带组号... menu.removeGroup(group1); //删除一个组
menu.setGroupVisible(group1, false); //设置可见性
menu.setGroupEnabled(group2, false); //设置是否可点
menu.setGroupCheckable(group2, true, t); //设置一组菜单的勾选情况*/ return super.onCreateOptionsMenu(menu);
} /**
* 第二步:菜单的响应
* 处理menu的点击事件
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId(); /**
* 对应 第一种方式,使用Java方式
*/
switch (id) {
case MENU_ITEM_CREATE:
Toast.makeText(this, item.getTitle() + " , 创建", Toast.LENGTH_LONG).show();
break;
case MENU_ITEM_DELETE:
Toast.makeText(this, item.getTitle() + " , 删除", Toast.LENGTH_LONG).show();
break;
case 11: // 上面代码 itemid定义是11
Toast.makeText(this, item.getTitle() + " , 第一个子菜单", Toast.LENGTH_LONG).show();
break;
case 12: // 上面代码 itemid定义是12
Toast.makeText(this, item.getTitle() + " , 第二个子菜单", Toast.LENGTH_LONG).show();
break;
default:
break;
}
// item.getTitle() 获取上面代码设置的标题 item.getItemId() 获取上面代码设置的ItemId
// Toast.makeText(this, item.getTitle() + " , " + item.getItemId(), Toast.LENGTH_LONG).show(); /**
* 对应 第二种方式,使用menu.xml
*/
switch (id) {
case R.id.menu_create:
Toast.makeText(this, item.getTitle() + " , menu.xml创建", Toast.LENGTH_LONG).show();
break;
case R.id.menu_delete:
Toast.makeText(this, item.getTitle() + " , menu.xml删除", Toast.LENGTH_LONG).show();
break;
case R.id.menu_sub1:
Toast.makeText(this, item.getTitle() + " , menu.xml子菜单一", Toast.LENGTH_LONG).show();
break;
case R.id.menu_sub2:
Toast.makeText(this, item.getTitle() + " , menu.xml子菜单二", Toast.LENGTH_LONG).show();
break;
}
// item.getTitle() 获取上面代码设置的标题 item.getItemId() 获取上面代码设置的ItemId
// Toast.makeText(this, item.getTitle() + " , " + item.getItemId(), Toast.LENGTH_LONG).show(); return super.onOptionsItemSelected(item);
} }

menu.xml

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item
android:id="@+id/menu_create"
android:icon="@android:drawable/ic_menu_add"
android:title="X新建">
</item> <item
android:id="@+id/menu_delete"
android:icon="@android:drawable/ic_menu_add"
android:title="X删除">
</item> <item android:title="X子菜单"> <menu> <item
android:id="@+id/menu_sub1"
android:icon="@android:drawable/ic_menu_add"
android:title="X子菜单1">
</item> <item
android:id="@+id/menu_sub2"
android:icon="@android:drawable/ic_menu_add"
android:title="X子菜单2">
</item> </menu> </item> </menu>

效果图:

Android-普通菜单Menu的更多相关文章

  1. Android菜单Menu的创建

    在res目录下的menu文件夹下创建一个main.xml文件,内容如下: <?xml version="1.0" encoding="utf-8"?> ...

  2. Android菜单详解(一)——理解android中的Menu

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

  3. android 开发-(Contextual Menu)上下文菜单的实现

    在android3.0以后,安卓设备不在提供物理的菜单按键,同时,android应用提供了另外的菜单实现机制,来替代之前的菜单创建方式.安卓设备中,平常可以使用长按住某个内容弹出菜单选项.这就是我们需 ...

  4. Android——菜单(Menu)

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

  5. Android Studio —— 创建Menu菜单项

    大多数android程序的右上角都会设置一个菜单按钮比如微信的界面右上角的加号. 这个需要在layout同级目录下新建文件夹命名为menu,再右击新建的menu新建xml文件:

  6. Android侧滑菜单代码实现

    前两天学习了hyman老师讲的Android侧滑菜单的实现,经过自己的整理分享出来给大家学习一下 现在很多APP都有菜单侧滑的功能,本篇文章主要讲解使用自定义的HorizontalScrollView ...

  7. android上下文菜单

    XML: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmln ...

  8. Android按键之Menu详解

    Android手机一般都有三个键,返回键.Home键.菜单键: Android系统的菜单支持主要通过4个接口来实现. 从上图可以看出Menu是一个父类接口,它下面有两个子类一个是ContextMenu ...

  9. Android ActionBar以及menu的代码设置样式

    menu部分xml代码 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:android= ...

  10. android 上下文菜单详解

    本文使用xml来创建上下文菜单 <?xml version="1.0" encoding="utf-8"?> <menu xmlns:andr ...

随机推荐

  1. RabbitMQ 高可用集群搭建

    面向EDA(事件驱动架构)的方式来设计你的消息 AMQP routing key的设计 RabbitMQ cluster搭建 Mirror queue policy设置 两个不错的RabbitMQ p ...

  2. Spring @Configuration

    下面是一个典型的spring配置文件(application-config.xml): <beans> <bean id="orderService" class ...

  3. 有几个Pass,对象就会绘制几次

    在每个SubShader内部可以包含多个,至少一个Pass.有几个Pass,对象就会绘制几次.在编写时我们应该尽量控制Pass的数量. 在Pass中包含Cg/HLSL程序片段,在其中编写vertex ...

  4. Spring配置连接池

    ---------------------siwuxie095                                 Spring 配置连接池         1.Spring 配置内置连接 ...

  5. 查看sqlserver所有存储过程、视图等脚本语句

    sqlserver上右击——任务——生成脚本 下一步——选择特定数据库对象 导出即可

  6. 11-st跳舞消耗体力最少

    /*                                                   炫舞家 ST 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述   ...

  7. vue2.0 tab切换几种方式

    第一种 比较灵活简单的方式(切换改变部分的内容在组件中比较方便操作) <template> <div id="app"> <ul> <li ...

  8. HTML5新特性:范围样式

    原文出处:http://blog.csdn.net/hfahe/article/details/7381141        Chromium 最近实现了一个HTML5的新特性:范围样式,又叫做< ...

  9. SVN中检出 和 导出 的区别

    SVN中检出 和 导出 的区别:检出得到的文件夹中,是受SVN客户端控制的,对其进行文件或文件夹的增删改操作都会被SVN客户端识别出来,对其可以进行update.commit操作.其中含有.svn隐藏 ...

  10. 情境领导II

    情境领导理论认为,领导者的行为要与被领导者的准备程度相适应,才能取得有效的领导效果,也就是说领导风格不是一成不变的,而要根据环境及员工的变化而改变. 三大技巧分别为诊断.弹性与约定领导型态.诊断是评估 ...