2.  PopupMenu 菜单的使用

1) PopupMenu 介绍

  创建弹出菜单,它一般会在view的上边或者下边弹出菜单[具体看是否有空间],注意弹出菜单是api在11或者更高版本中使用
  如果你在XML文件中定义了你的菜单,你就可以通过以下步骤来显示弹出菜单了:
  1. 实例化一个 PopupMenu 通过它的构造方法,这样就可以把当前应用的 context 和 view 传给所定义的菜单了
  2. 使用 MenuInflater 来加载菜单资源,通过 PopupMenu.getMenu() 得到一个 Menu 对象,如果是在 API 14 或者更高级,你可以通过 PopupMenu.inflate() 来代替了。
  3. 调用 PopupMenu.show()。

2) 程序实现

1) 布局文件 activity_main.xml 只是定义一个按钮,这里就不再粘贴了。

2) 菜单定义文件 目录:res/menu 下 main.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
android:id="@+id/share"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Share"/>
<item
android:id="@+id/edit"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Edit"/>
<item
android:id="@+id/delete"
android:orderInCategory="100"
android:showAsAction="never"
android:title="Delete"/> </menu>

3) 程序主要代码

public class MainActivity extends Activity {

    private Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initComponent();
//这种就不需要长按事件
button.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
//当前这个v就是 button2控件
PopupMenu popupMenu = new PopupMenu(MainActivity.this, v);
popupMenu.setOnMenuItemClickListener(new OnMenuItemClickListener() { @Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.edit:
Toast.makeText(MainActivity.this, "Edit", 3).show();
break;
case R.id.share:
Toast.makeText(MainActivity.this, "share", 3).show();
break;
case R.id.delete:
Toast.makeText(MainActivity.this, "delete", 3).show();
break;
}
return false;
}
}); MenuInflater inflater = popupMenu.getMenuInflater();
inflater.inflate(R.menu.main, popupMenu.getMenu());
popupMenu.show();
}
});
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} private void initComponent(){
button = (Button)findViewById(R.id.button1);
} }

3) 执行结果

详情参考:http://developer.android.com/guide/topics/ui/menus.html

Android4.0 -- UI控件之 Menu 菜单的的使用(四)的更多相关文章

  1. Android4.0 -- UI控件之 Menu 菜单的的使用(三)

    上一讲 [Android 开发]:UI控件之 Menu 菜单的的使用(二) 我们讲解了创建上下文菜单的第一种使用方式:Creating a floating context menu [创建悬浮的上下 ...

  2. Android4.0 -- UI控件之 Menu 菜单的的使用(二)

    上一讲我们讲解了android中在代码或者xml文件中定义菜单,这一讲我们继续来讲解一下定义菜单的其他方式:创建上下文的菜单.查看API文档 Menus :Creating Contextual Me ...

  3. Android4.0 -- UI控件之 Menu 菜单的的使用(一)

      这一讲开始我们来讲一下Android中菜单的使用方法,菜单是应用中的普通的组件,主要是提供友好和专注的用户体验,你可以在你的Activity中使用 Menu APIs 来提供用户动作和其他选项的操 ...

  4. 一个Activity掌握Android4.0新控件 (转)

    原文地址:http://blog.csdn.net/lavor_zl/article/details/51261380 谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常 ...

  5. Atitit.ui控件---下拉菜单选择控件的实现select html

    Atitit.ui控件---下拉菜单选择控件的实现select   html 1. 调用& model的实现 1 2. -----select.jsp------ 1 1. 调用& m ...

  6. Android4.0新控件

    谷歌在推出Android4.0的同时推出了一些新控件,Android4.0中最常用的新控件有下面5种.  1. Switch的使用 Switch顾名思义,就是开关的意思,有开和关两种状态. 当Swit ...

  7. Android 控件 之 Menu 菜单

    http://www.cnblogs.com/Mrs-cc/archive/2012/07/21/2603042.html 1.OptionsMenu (选项菜单)用法总结   使用方法: 方法一:添 ...

  8. Cocos2d-x3.0游戏实例之《别救我》第六篇——从代码中获取UI控件

    这篇的内容非常easy,获取UI控件,然后使用它. 还记得我们在UI编辑器中给三个button分别命名了吧? 如今要用上了. 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址: http ...

  9. Cocos2d-x3.0 从代码中获取cocostudio编辑的UI控件

    依据名字查找控件 须要包括的头文件及名字空间: #include "cocostudio/CocoStudio.h" #include "ui/CocosGUI.h&qu ...

随机推荐

  1. 14_输出映射2_resultMap

    [resultMap] 如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间做一个映射列表. 1.定义resultMap,(在UserMapper.xm ...

  2. bzoj1014:[JSOI2008]火星人prefix

    思路:插入.修改操作是splay的模型,然后询问的话就可以二分答案,然后再用splay去判,关键就在于怎么去判断. 可以用字符串hash,splay每个节点维护一个hash域,然后就可以定义一个进制去 ...

  3. cocos2d-x v3.0的window平台搭建和编译成andriod程序

    首先添加这个地址到系统环境变量,path 然后打开CMD,输入如下语句 现在就可以创建一个新项目了 这样一个空的cocos2d-x v3.0的项目就创建好了 接下来编译andriod程序 先在系统环境 ...

  4. 使用 Virtual Box 安装 android x86

    1.安装 跟随别人的教程:http://www.maketecheasier.com/run-android-4-3-in-virtualbox/ 2.问题 安装过程出现以下问题:Kernel pan ...

  5. 切割TOMCAT日志

    tomcat的catalina.out日志如果不做操作的话,日志就会日积月累的不断增加.我刚入职的时候发现某台服务器的硬盘报警,排查之后我慌了,一个tomcat的日志居然有100G,这怎么可以,在网上 ...

  6. LINUX开机启动过程

    LINUX开机启动过程 启动第一步--加载BIOS当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它.这是因为BIOS中包含了CPU的相关信息 ...

  7. O_NONBLOCK模式下写fifo的注意事项

    后台网络通信框架一般采用fifo来作为事件通知的机制:创建一个fifo,然后以非阻塞读和非阻塞写的方式打开fifo,然后把fd加到epoll里面,作为通知网络事件的fd. 在这里有个隐晦的问题容易被忽 ...

  8. AS3.0的动态类和密封类

    动态类:生成的实例可以在运行时动态添加属性和方法.类名前有dynamic就是动态类 密封类:生成的实例不可以在运行时动态添加属性和方法

  9. PHP - PHPExcel操作xls文件

    读取中文的xls.csv文件会有问题,网上找了下资料,发现PHPExcel类库好用,官网地址:http://phpexcel.codeplex.com/ 1.读取xls文件内容 <?php // ...

  10. CentOS使用sudo提示用户不在sudoers文件中的解决方法

    1切换到root用户[linux@localhost ~]$ su root密码:[root@localhost ~]# 2查看/etc/sudoers文件权限,如果只读权限,修改为可写权限 [roo ...