Android的两种菜单
菜单在Android开发中必不可少,可是要怎么实现各种菜单呢?是不是很头疼呢?下面我就来介绍一下:
1. 选项菜单和子菜单的实现
选项菜单:最常规的菜单,Android中把它叫做option menu。选项菜单最多只能显示6个菜单项,超过6个时,第6个菜单项会被系统替换为一个叫“更多”的子菜单,原来显示不下的菜单项都作为“更多”菜单的子菜单项。
子菜单:Android中点击了子菜单将弹出悬浮窗口显示子菜单项。子菜单不支持嵌套,即子菜单中不能再包括其他子菜单。
步骤1:生成子菜单和选项菜单。创建一个名为“myMenu”的Android Project。在MyMenuActivity类中,右单击Source→Override/Implement Methods。通过onCreateOptionsMenu()方法来生成选项菜单,代码如下:
public boolean onCreateOptionsMenu(Menu menu) { //生成选项菜单
// TODO Auto-generated method stub
super.onCreateOptionsMenu(menu); // 调用父类方法来加入系统菜单
menu.add(1,1,1,"分享");
menu.add(1,2,2,"剪切"); //添加菜单项
menu.add(1,3,3,"删除");
menu.add(1,4,4,"编辑");
menu.add(1,5,5,"旋转");
menu.add(1,6,6,"标注");
menu.add(1,7,7,"详细信息"); //menu.add(int groupId, int itemId, int order, CharSequence title);
menu.add(1,8,8,"设为壁纸");
SubMenu submenu=menu.addSubMenu("系统设置");//可以带子菜单的菜单项
submenu.add(1,1,1,"显示设置");
submenu.add(1,2,2,"高级设置");
submenu.add(1,3,3,"网络设置");
submenu.add(1,4,4,"安全设置");
return true;
}
步骤2:响应菜单。onOptionsItemSelected(MenuItem),每当有菜单项被点击时,android就会调用该方法,并传入被点击菜单项。
public boolean onOptionsItemSelected(MenuItem item) { //响应菜单
// TODO Auto-generated method stub
b1.setText(item.getTitle()); //点击了哪个菜单项,b1就显示哪个菜单项的title,
return true;
}
2. 上下文菜单的实现
上下文菜单:Android中长按视图控件后出现的菜单,windows点击右键弹出的菜单即上下文菜单。
步骤1:注册上下文菜单
public class MyMenuActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
b1=(Button) findViewById(R.id.b1); //注册按钮b1
this.registerForContextMenu(b1); //注册上下文菜单
}
Button b1;
步骤2:生成上下文菜单
public void onCreateContextMenu(ContextMenu menu, View v, //生成上下文菜单
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
if(v.getId()==R.id.b1)
{
menu.clear(); //清空上下文菜单(一些默认的菜单项)
menu.setHeaderTitle("文件操作"); //上下文菜单的标题
menu.add(0, 1, Menu.NONE, "发送"); //添加上下文菜单项
menu.add(0, 2, Menu.NONE, "标记为重要");
menu.add(0, 3, Menu.NONE, "重命名");
menu.add(0, 4, Menu.NONE, "删除");
}
}
步骤2:响应上下文菜单
public boolean onContextItemSelected(MenuItem item) { //响应上下文菜单
// TODO Auto-generated method stub
t1.setText(item.getTitle());
return true;
}
感悟
在没有写之前感觉满肚了想写了,思路很清晰。可到了写的时候,思路变得混乱了(也许是我没有集中精力吧)。不过还是完成了,有写的不对的地方亲们一定要指出来喔!
http://blog.csdn.net/dyllove98/article/details/8841769
Android的两种菜单的更多相关文章
- Unity调用Android的两种方式:其一、调用jar包
unity在Android端开发的时候,免不了要调用Java:Unity可以通过两种方式来调用Android:一是调用jar.二是调用aar. 这篇文章主要讲解怎么从无到有的生成一个jar包,然后un ...
- Android ListView两种长按弹出菜单方式
转自:http://www.cnblogs.com/yejiurui/p/3247527.html package com.wyl.download_demo; import java.util.Ar ...
- Android学习笔记(36):Android的两种事件处理方式
Android提供了两种事件处理的方式:基于回调的事件处理 和 基于监听的事件处理. 我们来说的easy理解一点: (1)基于回调的事件处理就是继承GUI组件,并重写该组件的事件处理方法.除了一些特定 ...
- Android APP 两种用程序拨号的方式
想在APP中添加一个拨号功能该怎样做呢?Android提供了两种方式,一种是ACTION_CALL方式直接拨打,另一种是ACTION_DIAL方式打开系统的拨号界面. 下面我们来做个小例子 首先需要在 ...
- android service两种启动方式
android service的启动方式有以下两种: 1.Context.startService()方式启动,生命周期如下所示,启动时,startService->onCreate()-> ...
- Android的两种事件处理机制
UI编程通常都会伴随事件处理,Android也不例外,它提供了两种方式的事件处理:基于回调的事件处理和基于监听器的事件处理. 对于基于监听器的事件处理而言,主要就是为Android界面组件绑定特定的事 ...
- Android中两种设置全屏的方法
设置全屏的两种方法: 第一种:在配置文件里面配置: <?xml version="1.0" encoding="utf-8"?><manife ...
- Android中两种设置全屏或者无标题的方法
在开发中我们经常需要把我们的应用设置为全屏或者不想要title, 这里是有两种方法的,一种是在代码中设置,另一种方法是在配置文件里改: 一.在代码中设置: package jason.tutor; i ...
- Android程序两种退出的方法
两种程序退出的方法: Context的finish()方法: android.os.Process的killProcess()方法:(当程序isRegistered()失败,说明程序被修改过,调用ki ...
随机推荐
- Migration workstation vms to openstack kvm
Migration workstation vms to openstack kvm 分别分成(磁盘是否拆分,vms 是否 有多个磁盘驱动器) 1, linux迁移 vmware workstatio ...
- WebLogic简单的备份和恢复
万一发生故障,为了迁移或者恢复WebLogic域,应定期地备份管理服务器机器上的整个域目录树.这样,只需恢复域目录并重启管理服务器就可以使服务器从硬件或者系统故障中恢复.在WebLogic生产域中,需 ...
- const和violate
const修饰变量 C语言中,const修饰的变量是只读的,本质还是变量,修饰的变量也会在内存中占用空间(这不废话么)本质上const只对编译器有用,在运行时无用.const和类型顺序无要求,一般类型 ...
- unix网络编程第三版源代码ubuntu下配置的问题解决
第一步:首先下载本书配套的源码unpv13e.tar.gz 第二步:解压后进入根文件夹有一个README 4 Execute the following from the src/ directory ...
- Xcode7 国际化
1.第一步 HaiTing_xcodeproj.png 2.第二不 HaiTing_xcodeproj 2.png 3.第三步 Localizable_strings.png 5第五步 ZLBMeVi ...
- 分层模型的典型应用和FishiGUI的分层模型
分层模式的典型应用: 对于交互类型的软件也能够採用分层模式来进行架构分析,一般来说将交互性的软件分为三个层次比較合适:显示层的职责是为了显示信息,应用逻辑层封装那些一般不easy发生变化的核心逻辑,而 ...
- Linux设备驱动中断机制
[主要内容] Linux设备驱动编程中的中断与定时器处理 [正文] 一.基础知识 1.中断 所谓中断是指CPU在执行程序的过程中,出现了某些突发事件急待处理,CPU必须暂停执行当前的程序,转去处理突发 ...
- Qt 内存泄漏测试
在说Qt的内存测试之前,首先需要说明和肯定的一点是:Qt是绝对没有内存泄漏的,我们必须相信这一点. 接下来,说明一下基于Linux的Qt内存测试工具及其用法和说明: 一.内存测试工具Valgrind ...
- (转 飛雲若雪)ADO.NET
一.简单介绍ADO.NET System.Data:DataTable,DataSet,DataRow,DataColumn,DataRelation,Constraint System.Data.C ...
- Jenkins api java 调用
String filepath = "E:\\config.xml"; HttpClient client = new DefaultHttpClient(); HttpPost ...