安卓开发_浅谈SubMenu(子菜单)

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

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

示例:

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

1        //动态添加子菜单
2
3         SubMenu file = menu.addSubMenu("文件");//子菜单的名字
4         SubMenu edit = menu.addSubMenu("编辑");//子菜单的名字
5         

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

 1         //给子菜单添加菜单项
 2         file.setHeaderTitle("文件操作");//菜单标题
 3         file.setHeaderIcon(R.drawable.icon_72); //菜单图标
 4         file.add(1, 100, 1, "打开");
 5         file.add(1, 101, 1, "关闭");
 6         file.add(1, 102, 1, "删除");
 7
 8         edit.setHeaderTitle("编辑操作");
 9         edit.setHeaderIcon(R.drawable.icon_72);
10         edit.add(2,100,1,"复制");
11         edit.add(2,101,1,"粘贴");
12         edit.add(2,102,1,"剪切");

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

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

 1 //添加响应事件
 2     @Override
 3     public boolean onOptionsItemSelected(MenuItem item) {
 4         // TODO Auto-generated method stub
 5
 6         //先判断组id再判断item 的id
 7         if(item.getGroupId()==1)
 8         {
 9             switch (item.getItemId()) {
10             case 100:
11                 Toast.makeText(SubMenu_text.this, "点击了打开", 1).show();
12                 break;
13             case 101:
14                 Toast.makeText(SubMenu_text.this, "点击了关闭", 1).show();
15                 break;
16             case 102:
17                 Toast.makeText(SubMenu_text.this, "点击了删除", 1).show();
18                 break;
19
20             default:
21                 break;
22             }
23         }
24         else if(item.getGroupId()==2)
25         {
26             switch (item.getItemId()) {
27             case 100:
28                 Toast.makeText(SubMenu_text.this, "点击了复制", 1).show();
29                 break;
30             case 101:
31                 Toast.makeText(SubMenu_text.this, "点击了粘贴", 1).show();
32                 break;
33             case 102:
34                 Toast.makeText(SubMenu_text.this, "点击了剪切", 1).show();
35                 break;
36
37             default:
38                 break;
39             }
40         }
41         return super.onOptionsItemSelected(item);
42     }

完整代码:

 1 package information;
 2
 3 import com.example.allcode.R;
 4
 5 import android.app.Activity;
 6 import android.os.Bundle;
 7 import android.view.Menu;
 8 import android.view.MenuItem;
 9 import android.view.SubMenu;
10 import android.widget.Toast;
11
12 public class SubMenu_text extends Activity{
13     @Override
14     protected void onCreate(Bundle savedInstanceState) {
15         // TODO Auto-generated method stub
16         super.onCreate(savedInstanceState);
17         setContentView(R.layout.submenu);
18     }
19
20     @Override
21     public boolean onCreateOptionsMenu(Menu menu) {
22         // TODO Auto-generated method stub
23         //动态添加子菜单
24
25         SubMenu file = menu.addSubMenu("文件");//子菜单的名字
26         SubMenu edit = menu.addSubMenu("编辑");//子菜单的名字
27
28         //给子菜单添加菜单项
29         file.setHeaderTitle("文件操作");//菜单标题
30         file.setHeaderIcon(R.drawable.icon_72); //菜单图标
31         file.add(1, 100, 1, "打开");
32         file.add(1, 101, 1, "关闭");
33         file.add(1, 102, 1, "删除");
34
35         edit.setHeaderTitle("编辑操作");
36         edit.setHeaderIcon(R.drawable.icon_72);
37         edit.add(2,100,1,"复制");
38         edit.add(2,101,1,"粘贴");
39         edit.add(2,102,1,"剪切");
40
41         return super.onCreateOptionsMenu(menu);
42
43     }
44
45     //添加响应事件
46     @Override
47     public boolean onOptionsItemSelected(MenuItem item) {
48         // TODO Auto-generated method stub
49
50         //先判断组id再判断item 的id
51         if(item.getGroupId()==1)
52         {
53             switch (item.getItemId()) {
54             case 100:
55                 Toast.makeText(SubMenu_text.this, "点击了打开", 1).show();
56                 break;
57             case 101:
58                 Toast.makeText(SubMenu_text.this, "点击了关闭", 1).show();
59                 break;
60             case 102:
61                 Toast.makeText(SubMenu_text.this, "点击了删除", 1).show();
62                 break;
63
64             default:
65                 break;
66             }
67         }
68         else if(item.getGroupId()==2)
69         {
70             switch (item.getItemId()) {
71             case 100:
72                 Toast.makeText(SubMenu_text.this, "点击了复制", 1).show();
73                 break;
74             case 101:
75                 Toast.makeText(SubMenu_text.this, "点击了粘贴", 1).show();
76                 break;
77             case 102:
78                 Toast.makeText(SubMenu_text.this, "点击了剪切", 1).show();
79                 break;
80
81             default:
82                 break;
83             }
84         }
85         return super.onOptionsItemSelected(item);
86     }
87 }

SubMenu_text.java

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

在AndroidManifest.xml文件下修改

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

效果图:

时间: 2024-10-27 15:44:38

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

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

ListView作为一个实际开发中使用率非常高的视图,一般的系统自带的适配器都无法满足开发中的需求,这时候就需要开发人员来自定义适配器使得ListView能够有一个不错的显示效果 有这样一个Demo ,实现图片文字混合列表 1 package com.example.work; 2 3 import java.util.ArrayList; 4 import java.util.HashMap; 5 import java.util.List; 6 7 8 import android.R.in

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

Property动画 概念:属性动画,即通过改变对象属性的动画. 特点:属性动画真正改变了一个UI控件,包括其事件触发焦点的位置 一.重要的动画类及属性值: 1.  ValueAnimator 基本属性动画类 方法 描述 setDuration(long duration) 设置动画持续时间的方法 setEvaluator(TypeEvaluator value) 设置插值计算的类型 setInterpolator(TimeInterpolator value) 设置时间插值器的类型 addUp

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

Android平台下所提供的菜单大体上可分为三类:选项菜单.上下文菜单和子菜单. 当Activity在前台运行时,如果用户按下手机上的Menu键,此时就会在屏幕低端弹出相应的选项菜单.但这个功能需要开发人员编程来实现的,如果在开发应用程序时没有实现该功能,那么程序运行时按下手机的meun键是不会起作用的. 这里就先学习 选项菜单OptionsMenus 创建选项菜单有两种方式 一.xml文件静态创建 7 package information; 8 9 import com.example.al

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

长下文菜单,即长按view显示一个菜单栏 与OptionMenu的区别OptionMenu对应的是activity,一个activity只能拥有一个选项菜单ContextMenu对应的是View,每个View都可以设置上下文菜单一般情况下ContextMenu常用语ListView或者GridView; 创建和响应上下文菜单过程: 1.在activity的onCreate(...)方法中为一个view注册上下文菜单 2.在onCreateContextMenuInfo(...)中生成上下文菜单.

安卓开发_浅谈AsyncTask

前些天面试一个培训班,老师问了俩安卓的问题,结果都没答出来,(- ̄(OO) ̄)ブ 一个是关于Listview的,我没大用过啊,不会.一个是关于AsyncTask的,没听过,更没用过...( ⊙o⊙ )千真万确 会的一个没问啊.~(≧▽≦)/~ 现在就来学习一下AsyncTask. 一.先介绍一下AsyncTask: 在开发Android移动客户端的时候往往要使用多线程来进行操作,我们通常会将耗时的操作放在单独的线程执行,避免其占用主线程而给用户带来不好的用户体验.但是在子线程中无法去操作主线程(

安卓开发_浅谈ListView之分页列表

前言: 在开发的过程中,有时候我们需要从网络解析一些数据,比如最近的一些新闻,我们需要把这些数据用ListView显示出来. 因为是解析一个网络数据源,这样将会一下子将所有的数据解析出来,当数据源数据过大时,就可能会造成解析时间过长,占用内存过大等问题. 这时候想到用分页列表来显示这些数据,即每次只显示一个屏幕所能容纳条数的列表项数据,当用户手指向下拉动的时候,才再加载一个屏幕所能容纳的条数的数据,这样就解决了上述问题. -------------------------------------

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

Notification通知栏是显示在手机状态的消息,代表一种全局效果的通知 快速创建一个Notification的步骤简单可以分为以下四步: 第一步:通过getSystemService()方法得到NotificationManager对象: 第二步:对Notification的一些属性进行设置比如:内容,图标,标题,相应notification的动作进行处理等等: 第三步:通过NotificationManager对象的notify()方法来执行一个notification的快讯:   第四

安卓开发_浅谈自定义组件

在Android中,所有的UI界面都是由View类和ViewGroup类及其子类组合而成.其中,View类是所有UI组件的基类,而ViewGroup类是容纳这些UI组件的容器. 其本身也是View类的子类. 在实际开发中,View类还不足以满足程序所有的需求.这时,便可以通过继承View类来开发自己的组件. 开发自定义组件的步骤: 1.创建一个继承android.view.View类的View类,并且重写构造方法. 2.根据需要重写相应的方法. 3.创建并实例化自定义View类,并将其添加到布局

安卓开发_浅谈DatePicker(日期选择器)

DatePicker继承自FrameLayout类,日期选择控件的主要功能是向用户提供包含年.月.日的日期数据并允许用户对其修改.如果要捕获用户修改日期选择控件中的数据事件,需要为DatePicker添加OnDateChangedListener监听器. 示例: 一.全局模式 1.布局文件 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="htt