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

创建子菜单的步骤:
  (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. log4net各种Filter使用

    log4net里面的filter类常用的为: 1.DenyAllFilter 拒绝所用的日志输出 <filter type="log4net.Filter.LevelMatchFilt ...

  2. Koa – 更加强大的下一代 Node.js Web 框架

    Koa 是 Express 的开发团队设计的下一代 Web 框架,其目的是为 Web 应用程序提供更小,更具表现力,更坚实的基础.Koa 没有核捆绑任何中间件,并提供了一​​套优雅的方法,使服务器端开 ...

  3. LeetCode-334. Increasing Triplet Subsequence

    Description: Given an unsorted array return whether an increasing subsequence of length 3 exists or ...

  4. C# 只启动一个实例完全解决方案

    工作上经常会遇到"程序只能启动一个实例"这样的需求. 我想,这样的需求应该很普遍,所以没打算去动脑筋,去找谷歌问下就得了,用下来发现,不是这里不爽就是那里不行. 先说下我详细的几点 ...

  5. SQL Server里简单参数化的痛苦

    在今天的文章里,我想谈下对于即席SQL语句(ad-hoc SQL statements),SQL Server使用的简单参数化(Simple Parameterization)的一些特性和副作用.首先 ...

  6. IE11之F12 Developer Tools--控制台工具(Console)

    前面我们介绍了IE11的Developer Tools中的第一个工具--DOM Explorer,这篇文章介绍第二个工具--控制台(Console),使用控制台工具查看错误和其他信息.发送调试输出.检 ...

  7. 一次领域驱动设计(DDD)的实际应用

    笔者先前参与了一个有关汽车信息的网站开发,用于显示不同品牌的汽车的信息,包括车型,发动机型号,车身尺寸和汽车报价等信息.在建模时,我们只需要创建名为Car的实体(Entity)对象.其他的信息,比如车 ...

  8. ok6410 android driver(10)

    From this essay, we go to a new discussion "Android Hardware Abstraction Layer". In this e ...

  9. .net4.0注册到IIS ,重新注册IIS ,iis注册

    IIS和.netfw4.0安装顺序是从前到后,如果不小心颠倒了,无所谓. 打开程序-运行-cmd:输入一下命令重新注册IIS C:\WINDOWS\Microsoft.NET\Framework\v4 ...

  10. 创建一个带模版的用户控件 V.2

    前面有做练习<创建一个带模版的用户控件>http://www.cnblogs.com/insus/p/4161544.html .过于简化.通常使用数据控件Repeater会有网页写好He ...