Android学习总结——Popup menu:弹出式菜单
2024-09-28 03:30:59
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
最新文章
- java 正则匹配括号对以及其他成对出现的模式
- oricle数据库关于定时
- JQuery Easy Ui dataGrid 数据表格
- CentOS6.5 mysql 5.5安装
- 【转】Windows Phone 8 开发环境的搭建
- 无向图的最短路径算法JAVA实现
- The include feature of SQL Server Index
- Gvim for php 安装配置
- 根据中国气象局提供的API接口实现天气查询
- 菜鸟学习 git
- WebGIS基础复习笔记
- 用SD卡下载uboot、linux内核和文件系统
- 如何获得SQL Server索引使用情况
- SVN常见错误两项纪录
- 用js实现文字提示层 ---总结
- iOS App稳定性指标及监测
- 使用CMD命令编译和运行Java程序
- MySQL 数据库 Query 的优化
- 如何使用js改变HTML中title里面固定的文字
- Twitter的雪花算法(snowflake)自增ID
热门文章
- Java中普通代码块,构造代码块,静态代码块的代码演示样例及区分
- [Angular 2] Injecting a Service
- Android自定义控件(三)——有弹性的ListView
- asp.net读取文件
- 用C#代码控制水晶报表中的对象
- 给一组a标签当前页a标签加class
- 解决django关于图片无法显示的问题
- artDialog的几种基本使用
- 拉姆达表达式 追加 条件判断 Expression<;Func<;T, bool>;>;
- c# List集合的Find方法适用