PopupMenu,弹出菜单,一个模态形式展示的弹出风格的菜单,绑在在某个View上,一般出现在被绑定的View的下方(如果下方有空间)。

注意:弹出菜单是在API 11和更高版本上才有效的。

核心步骤:

(1)通过PopupMenu的构造函数实例化一个PopupMenu对象,需要传递一个当前上下文对象以及绑定的View。

(2)调用PopupMenu.setOnMenuItemClickListener()设置一个PopupMenu选项的选中事件。

(3)使用MenuInflater.inflate()方法加载一个XML文件到PopupMenu.getMenu()中。

(4)在需要的时候调用PopupMenu.show()方法显示。

现在通过代码来实现。重新新建一个工程文件MenuTest03。步骤如下:

先在布局文件activity_main.xml中加一个按钮,代码略。

(1)在res/menu/main.xml中定义菜单项。main.xml的代码如下:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/exit"
android:title="退出"/>
<item android:id="@+id/set"
android:title="设置"/>
<item android:id="@+id/account"
android:title="账号"/>
</menu>

(2)MainActivity.java:

package com.example.menutest03;

import android.app.Activity;import android.os.Bundle;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.PopupMenu;
import android.widget.PopupMenu.OnMenuItemClickListener;
import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener,OnMenuItemClickListener{ private Button button1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(this);
} //点击按钮后,加载弹出式菜单
@Override
public void onClick(View v) {
//创建弹出式菜单对象(最低版本11)
PopupMenu popup = new PopupMenu(this, v);//第二个参数是绑定的那个view
//获取菜单填充器
MenuInflater inflater = popup.getMenuInflater();
//填充菜单
inflater.inflate(R.menu.main, popup.getMenu());
//绑定菜单项的点击事件
popup.setOnMenuItemClickListener(this);
//显示(这一行代码不要忘记了)
popup.show(); } //弹出式菜单的单击事件处理
@Override
public boolean onMenuItemClick(MenuItem item) {
// TODO Auto-generated method stub
switch (item.getItemId()) {
case R.id.exit:
Toast.makeText(this, "退出", Toast.LENGTH_SHORT).show();
break;
case R.id.set:
Toast.makeText(this, "设置", Toast.LENGTH_SHORT).show();
break;
case R.id.account:
Toast.makeText(this, "账号", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return false;
} }

注意代码绑定了两个监听器:OnClickListener和OnMenuItemClickListener。 在绑定OnMenuItemClickListener监听器时,选的是下面这个:

效果如下:


更多技术干货,欢迎关注我的公众号:ChaoYoung

最新文章

  1. java 正则匹配括号对以及其他成对出现的模式
  2. oricle数据库关于定时
  3. JQuery Easy Ui dataGrid 数据表格
  4. CentOS6.5 mysql 5.5安装
  5. 【转】Windows Phone 8 开发环境的搭建
  6. 无向图的最短路径算法JAVA实现
  7. The include feature of SQL Server Index
  8. Gvim for php 安装配置
  9. 根据中国气象局提供的API接口实现天气查询
  10. 菜鸟学习 git
  11. WebGIS基础复习笔记
  12. 用SD卡下载uboot、linux内核和文件系统
  13. 如何获得SQL Server索引使用情况
  14. SVN常见错误两项纪录
  15. 用js实现文字提示层 ---总结
  16. iOS App稳定性指标及监测
  17. 使用CMD命令编译和运行Java程序
  18. MySQL 数据库 Query 的优化
  19. 如何使用js改变HTML中title里面固定的文字
  20. Twitter的雪花算法(snowflake)自增ID

热门文章

  1. Java中普通代码块,构造代码块,静态代码块的代码演示样例及区分
  2. [Angular 2] Injecting a Service
  3. Android自定义控件(三)——有弹性的ListView
  4. asp.net读取文件
  5. 用C#代码控制水晶报表中的对象
  6. 给一组a标签当前页a标签加class
  7. 解决django关于图片无法显示的问题
  8. artDialog的几种基本使用
  9. 拉姆达表达式 追加 条件判断 Expression&lt;Func&lt;T, bool&gt;&gt;
  10. c# List集合的Find方法适用