子菜单,即点击菜单后出现一个菜单栏供选择

创建子菜单的步骤:
  (1) 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单
  (2) 调用SubMenu的add()方法,添加子菜单项
  (3) 覆盖onContextItemSelected()方法,响应子菜单的单击事件

示例:

(1) 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单

        //动态添加子菜单

         SubMenu file = menu.addSubMenu("文件");//子菜单的名字
SubMenu edit = menu.addSubMenu("编辑");//子菜单的名字

(2) 调用SubMenu的add()方法,添加子菜单项

         //给子菜单添加菜单项
file.setHeaderTitle("文件操作");//菜单标题
file.setHeaderIcon(R.drawable.icon_72); //菜单图标
file.add(, , , "打开");
file.add(, , , "关闭");
file.add(, , , "删除"); edit.setHeaderTitle("编辑操作");
edit.setHeaderIcon(R.drawable.icon_72);
edit.add(,,,"复制");
edit.add(,,,"粘贴");
edit.add(,,,"剪切");

// 添加OptionsMenu菜单项,即4,5,6,10,11,12行代码方法
/* menu.add(groupId, itemId, order, title)
* groupId:菜单项所在的组
* itemId:菜单项编号
* order:排序
* title:标题
* setIcon()方法为菜单设置图标,

(3) 覆盖onContextItemSelected()方法,响应子菜单的单击事件

 //添加响应事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub //先判断组id再判断item 的id
if(item.getGroupId()==)
{
switch (item.getItemId()) {
case :
Toast.makeText(SubMenu_text.this, "点击了打开", ).show();
break;
case :
Toast.makeText(SubMenu_text.this, "点击了关闭", ).show();
break;
case :
Toast.makeText(SubMenu_text.this, "点击了删除", ).show();
break; default:
break;
}
}
else if(item.getGroupId()==)
{
switch (item.getItemId()) {
case :
Toast.makeText(SubMenu_text.this, "点击了复制", ).show();
break;
case :
Toast.makeText(SubMenu_text.this, "点击了粘贴", ).show();
break;
case :
Toast.makeText(SubMenu_text.this, "点击了剪切", ).show();
break; default:
break;
}
}
return super.onOptionsItemSelected(item);
}

完整代码:

 package information;

 import com.example.allcode.R;

 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 SubMenu_text extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.submenu);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
//动态添加子菜单 SubMenu file = menu.addSubMenu("文件");//子菜单的名字
SubMenu edit = menu.addSubMenu("编辑");//子菜单的名字 //给子菜单添加菜单项
file.setHeaderTitle("文件操作");//菜单标题
file.setHeaderIcon(R.drawable.icon_72); //菜单图标
file.add(, , , "打开");
file.add(, , , "关闭");
file.add(, , , "删除"); edit.setHeaderTitle("编辑操作");
edit.setHeaderIcon(R.drawable.icon_72);
edit.add(,,,"复制");
edit.add(,,,"粘贴");
edit.add(,,,"剪切"); return super.onCreateOptionsMenu(menu); } //添加响应事件
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub //先判断组id再判断item 的id
if(item.getGroupId()==)
{
switch (item.getItemId()) {
case :
Toast.makeText(SubMenu_text.this, "点击了打开", ).show();
break;
case :
Toast.makeText(SubMenu_text.this, "点击了关闭", ).show();
break;
case :
Toast.makeText(SubMenu_text.this, "点击了删除", ).show();
break; default:
break;
}
}
else if(item.getGroupId()==)
{
switch (item.getItemId()) {
case :
Toast.makeText(SubMenu_text.this, "点击了复制", ).show();
break;
case :
Toast.makeText(SubMenu_text.this, "点击了粘贴", ).show();
break;
case :
Toast.makeText(SubMenu_text.this, "点击了剪切", ).show();
break; default:
break;
}
}
return super.onOptionsItemSelected(item);
}
}

SubMenu_text.java

注意:为了实现界面的美化,需要给该activity一个样式

在AndroidManifest.xml文件下修改

<activity android:name="information.SubMenu_text"
  android:theme="@android:style/Theme.Light.NoTitleBar">
</activity>

效果图:

安卓开发_浅谈SubMenu(子菜单)的更多相关文章

  1. 安卓开发_浅谈ListView(SimpleAdapter数组适配器)

    安卓开发_浅谈ListView(ArrayAdapter数组适配器) 学习使用ListView组件和SimapleAdapter适配器实现一个带图标的ListView列表 总共3部分 一.MainAc ...

  2. 安卓开发_浅谈Android动画(四)

    Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1.  ValueAnimator 基本属 ...

  3. 安卓开发_浅谈ListView(自定义适配器)

    ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ...

  4. 安卓开发_浅谈Fragment之ListFragment

    ListFragment,即Fragment的一个子类,当我们用的一个Fragment只需要一个listview视图的时候使用 该类有几个特点: 1.ListFragment 本身具只有一个ListV ...

  5. 安卓开发_浅谈OptionsMenus(选项菜单)

    Android平台下所提供的菜单大体上可分为三类:选项菜单.上下文菜单和子菜单. 当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单.但这个功能需要开 ...

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

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

  7. 安卓开发_浅谈AsyncTask

    现在就来学习一下AsyncTask. 一.先介绍一下AsyncTask: 在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给 ...

  8. 安卓开发_浅谈Action Bar

    一.Action Bar 导航栏.是3.0之后出现的. 所以注意使用的时候清单文件要设置下 android:minSdkVersion="11"(至少11) 但如果使用v4包,则不 ...

  9. 安卓开发_浅谈Notification(通知栏)

    Notification通知栏是显示在手机状态的消息,代表一种全局效果的通知 快速创建一个Notification的步骤简单可以分为以下四步: 第一步:通过getSystemService()方法得到 ...

随机推荐

  1. mingW与cygwin

    转自:http://hi.baidu.com/ooxxer/item/d25dccc072846a50ac00ef7e# 首先MingW和cygwin都可以用来跨平台开发.  MinGW是Minima ...

  2. 【原】Configuring Oracle Data Guard In Physical Standby Database

    作者:david_zhang@sh [转载时请以超链接形式标明文章] http://www.cnblogs.com/david-zhang-index/p/5042640.html参照文档:https ...

  3. main函数读取jar包外部的配置文件properties

    首先,Java的main方法有个初始化入参args,如下所示: public static void main(String[] args) {} 然后,在linux下执行jar包引入外部配置文件的命 ...

  4. 在Visual Studio 2010中进行“项目重命名”的有效工具

    地址:http://www.cnblogs.com/dudu/archive/2011/12/11/visual_studio_2010_project_rename.html 提示:这个工具一次 r ...

  5. NGUI Atlas

    打开 Atlas Maker:NGUI -> Open -> Atlas Maker 新建一个 "Icon Atlas" 生成3个东西:

  6. Network - 工具列表

    Tcpdump homepage - tcpdump wiki - tcpdump Wireshark homepage - wireshark wiki - wireshark Fiddler ho ...

  7. TogetherJS – 酷!在网站中添加在线实时协作功能

    TogetherJS是一个免费.开源的 JavaScript 库,来自 Mozilla 实验室,可以实现基于 Web 的在线协作功能.把 TogetherJS 添加到您的网站中,您的用户可以在实时的互 ...

  8. Angular系列----AngularJS入门教程04:迭代器过滤(转载)

    我们在上一步做了很多基础性的训练,所以现在我们可以来做一些简单的事情喽.我们要加入全文检索功能(没错,这个真的非常简单!).同时,我们也会写一个端到端测试,因为一个好的端到端测试可以帮上很大忙.它监视 ...

  9. 【C++】第1章 在VS2015中用C++编写控制台应用程序

    分类:C++.VS2015 创建日期:2016-06-12 一.简介 看到不少人至今还在用VC 6.0开发工具学习C++,其实VC 6.0开发工具早就被淘汰了.这里仅介绍学习C++时推荐使用的两种开发 ...

  10. Redis持久化-数据丢失及解决

    Redis的数据回写机制 Redis的数据回写机制分同步和异步两种, 同步回写即SAVE命令,主进程直接向磁盘回写数据.在数据大的情况下会导致系统假死很长时间,所以一般不是推荐的. 异步回写即BGSA ...