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 ...
随机推荐
- Hadoop操作hdfs的命令【转载】
本文系转载,原文地址被黑了,故无法贴出原始链接. Hadoop操作HDFS命令如下所示: hadoop fs 查看Hadoop HDFS支持的所有命令 hadoop fs –ls 列出目录及文件信息 ...
- 您好,想问一下目前哪些营业厅可以办理NFC-SIM卡的更换业务?_百度知道
您好,想问一下目前哪些营业厅可以办理NFC-SIM卡的更换业务?_百度知道 您好,想问一下目前哪些营业厅可以办理NFC-SIM卡的更换业务? 2013-06-14 10:39 maxre ...
- wxPython跨线程调用
版权所有,转载请注明出处:http://guangboo.org/2013/08/23/wxpython-non-gui-thread-call-gui-method 之前有介绍了<wxPyth ...
- W3C词汇和术语表
以A字母开头的词汇 英文 中文 abstract module 抽象模组 access 访问.存取 access control 存取控制 access control information 存取控 ...
- iOS内存管理(一)
最近有时间,正好把iOS相关的基础知识好好的梳理了一下,记录一下内存相关方面的知识. 在理解内存管理之前我觉得先对堆区和栈区有一定的了解是非常有必要的. 栈区:就是由编译器自动管理内存分配,释放过程的 ...
- JS 时间格式CST转GMT
近几天,在做百度地图时,需要转换时间格式并做显示,但是发现显示的时间格式,出现了错乱,二者的日期和小时都出现了变动.例如: 原始时间格式:Thu Aug 18 20:38:54 CST 2016 转换 ...
- 使用Fastjson提示No serializer found for class
在调用Json串生成方法时,提示: No serializer found for class com.jeremxy.domain.EpgDetail and no propertiesdiscov ...
- [Angular 2] Passing Observables into Components with Async Pipe
The components inside of your container components can easily accept Observables. You simply define ...
- C# 窗口传值的方法
方法一: A to B 设置FormB 为 带参数的构造函数 public Form2( object msg) { InitializeComponent(); } 方法二: A to B 定义一 ...
- NYOJ737
题意:给n堆石子,按照顺序排列,只能相邻两堆石子合并,求最后合并为一堆时所花费的最小代价,石子合并代价为两堆石子之和. 输入: n(石子堆数) Xi(每堆石子个数) 输出: T(最小代价) 思路:经典 ...