Options Menu                                                                          

创建选项菜单的步骤:

1、覆盖Activity 的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用

2、调用Menu 的add( )方法添加菜单项(MenuItem),同时可以调用MenuItem 的setIcon( )方法来为菜单项设置图标

3、当菜单项(MenuItem)被选择时,覆盖Activity 的onOptionsItemSelected(MenuItem item)来响应事件

public class MainActivity extends Activity {

    // 定义一些变量,后面直接拿来用
private static final int START_ITEM = Menu.FIRST;
private static final int OVER_ITEM = Menu.FIRST + 1;
private static final int SET_ITEM1 = Menu.FIRST + 2;
private static final int SET_ITEM2 = Menu.FIRST + 3; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// 添加菜单项(组ID,菜单项ID,排序,标题)
menu.add(0, START_ITEM, 100, "开始");
menu.add(0, OVER_ITEM, 200, "结束");
// 添加子菜单
SubMenu sub1 = menu.addSubMenu("设置");
sub1.add(1, SET_ITEM1, 300, "设置声音");
sub1.add(1, SET_ITEM2, 400, "设置桌面");
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) {
case START_ITEM:
// 提示信息
Toast.makeText(this, "开始", Toast.LENGTH_SHORT).show();
break;
case OVER_ITEM:
// 提示信息
Toast.makeText(this, "结束", Toast.LENGTH_SHORT).show();
break;
case SET_ITEM1:
// 提示信息
Toast.makeText(this, "声音设置", Toast.LENGTH_SHORT).show();
break;
case SET_ITEM2:
// 提示信息
Toast.makeText(this, "设置桌面", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
} }

Context Menu                                                                        

顾名思义,与上下文(环境)有关。思想类似于Windows中的右键单击弹出的快捷菜单。操作时需要长时间按住某个东东不放。

创建上下文菜单的步骤:

1、覆盖Activity 的onCreateContextMenu(Menu menu)方法,调用Menu的add()方法添加菜单项(MenuItem)。

2、覆盖Activity 的onContextItemSelected(MenuItem iitem)来响应事件。

3、调用registerForContextMenu( )方法来为视图注册上下文菜单。

public class MainActivity2 extends Activity {

    private Button btn1;

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
// 获取BUTTON对象
btn1 = (Button) findViewById(R.id.button1);
//在button上注册上下文菜单
registerForContextMenu(btn1);
} // 创建上下文菜单的事件方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.menu_main2, menu); } // 上下文菜单项触发事件
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.start:
Toast.makeText(this, "开始。。。", Toast.LENGTH_SHORT).show();
break;
case R.id.over:
Toast.makeText(this, "结束。。。", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onContextItemSelected(item);
} }

Popup Menu                                                                             

弹出式菜单.

弹出菜单是停靠在一个View上的一个模式菜单。如果View对象下方有空间,那么弹出菜单将显示在停靠对象的下方,否则会显示在上方。这是非常有用的。

public class MainActivity3 extends Activity  implements OnMenuItemClickListener{

    @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main3);
} public void showPopupMenu(View v){
//创建弹出式菜单对象(最低版本11)
PopupMenu popup = new PopupMenu(this,v);
//获取菜单填充器
MenuInflater inflater = popup.getMenuInflater();
//填充菜单
inflater.inflate(R.menu.menu_main3, popup.getMenu());
//设置菜单项的单击事件
popup.setOnMenuItemClickListener(this); popup.show();
} //弹出式菜单的单击事件处理
@Override
public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) {
case R.id.copy:
Toast.makeText(this, "复制。。。", Toast.LENGTH_LONG).show();
break;
case R.id.del:
Toast.makeText(this, "删除。。。", Toast.LENGTH_LONG).show();
break; default:
break;
}
return false;
} }

我是天王盖地虎的分割线                                                               

源代码:http://pan.baidu.com/s/1dD1Qx01

menu学习.zip

转载请注明出处:http://www.cnblogs.com/yydcdut

Android -- Options Menu,Context Menu,Popup Menu的更多相关文章

  1. popup menu案例,无说明只代码

    效果图: 布局文件, 展示列表的容器 <?xml version="1.0" encoding="utf-8"?> <LinearLayout ...

  2. How to easily create popup menu for DevExpress treelist z

    http://www.itjungles.com/how-to-easily-create-popup-menu-for-devexpress-treelist.html Adding popup m ...

  3. android开发之res下的menu (xml+代码的形式)

    转载请注明出处:http://blog.csdn.net/fth826595345/article/details/9199393 先来看Menu  XML文件如何编写: <?xml versi ...

  4. Android Studio 3.0下创建menu布局文件的图例

    当开始一个android app的时候,android studio项目中没有看到menu文件夹:如下所示: 当要添加一个按钮时,很多文档上都会说,通过在项目的 res/menu 目录中新增一个 XM ...

  5. 通过boundingRectWithSize:options:attributes:context:计算文本尺寸

    转:http://blog.csdn.net/iunion/article/details/12185077   之前用Text Kit写Reader的时候,在分页时要计算一段文本的尺寸大小,之前使用 ...

  6. Android各种获取Context方法

    首先讲一讲这四个函数的区别,后面还有我对context的一些理解区别如下所示: 原文链接http://stackoverflow.com/questions/6854265/getapplicatio ...

  7. TextKit学习(四)通过boundingRectWithSize:options:attributes:context:计算文本尺寸

    之前用Text Kit写Reader的时候,在分页时要计算一段文本的尺寸大小,之前使用了NSString类的sizeWithFont:constrainedToSize:lineBreakMode:方 ...

  8. Android中的Context(一)

    Android中的Context(一) 在Android开发中,Context可以说是我们接触地非常多的一个概念了,也译作"上下文",但是这个上下文到底是什么却并不好理解. 通俗的 ...

  9. Android获取全局Context的方法

    Android获取全局Context的方法 Android--应用全局获取Context - 超宇的博客 - CSDN博客https://blog.csdn.net/chaoyu168/article ...

随机推荐

  1. linux网络管理----网络命令

    1 Linux网络命令之网络环境查看命令  ifconfig  2 Linux网络命令之网络测试命令  telnet 基本已经被ssh替代了,telnet是明文传递,不安全

  2. 【Python初级】StringIO和BytesIO读写操作的小思考

    from io import StringIO; f = StringIO(); f.write('Hello World'); s = f.readline(); print s; 上面这种方法“无 ...

  3. apue第17章笔记

    unix domain socket 关闭socket并不会删除文件,重复bind会失败.所以在bind之前要unlink该文件. open服务器的实现只是简单地看了一下,大致上就是通过unix do ...

  4. 缩略图信息提取工具vinetto

    缩略图信息提取工具vinetto   在Windows操作系统中,为了方便用户快速浏览图片,系统会自动为每个图片生成预览图.预览图默认保存在同目录的Thumbs.db文件中.当图片文件删除后,Thum ...

  5. XSS漏洞自动化攻击工具XSSer

    XSS漏洞自动化攻击工具XSSer   XSS是Web应用常见的漏洞.利用该漏洞,安全人员在网站注入恶意脚本,控制用户浏览器,并发起其他渗透操作.XSSer是Kali Linux提供的一款自动化XSS ...

  6. Host aggregate分区

    问题描述:生产区一期环境增加4台计算结点,希望被大数据租户独占1. 该大数据用户创建的虚拟机必须被调度到这4个计算结点2. 其他租户创建虚拟机禁止调度到这4台机器 标黄的需要自行根据情况修改解决方案: ...

  7. RxSwift 系列(九)

    前言 看完本系列前面几篇之后,估计大家也还是有点懵逼,本系列前八篇也都是参考RxSwift官方文档和一些概念做的解读.上几篇文章概念性的东西有点多,一时也是很难全部记住,大家脑子里面知道有这么个概念就 ...

  8. (转)Ubuntu 16.04 安裝Docker(PS:本文适用amd64位的ubuntu系统)

    1.前置安裝,確保你的系統是64位 $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-p ...

  9. Hibernate 对象的生命周期及CRUD操作

    对象状态及生命周期 1.Transient(瞬时状态):new的对象为瞬时态 session中没有数据,数据库中没有数据. 2.Persistent(持久状态):被session管理的对象为持久状态, ...

  10. Tsinsen 拉拉队排练

    建回文树,然后判断长度奇偶性,统计下来排序即可. 题目链接:http://www.tsinsen.com/ViewGProblem.page?gpid=A1255 By:大奕哥 #include< ...