博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
菜单和对话框
阅读量:4352 次
发布时间:2019-06-07

本文共 4097 字,大约阅读时间需要 13 分钟。

Android菜单有两种:

1、  选项菜单(OptionsMenu)

在Activity里面重写onCreateOptionsMenu(Menu menu)方法,然后有两种方式可以来添加菜单

⑴、直接在代码里面添加

public boolean onCreateOptionsMenu(Menu menu) {         {
// 代码添加菜单项 // add(int groupId, int itemId, int order, CharSequence title) // groupId:组ID; // itemId: itemID; // order:显示顺序 // title:菜单项的标题 menu.add(0, 0, 5, "添加").setIcon(android.R.drawable.ic_menu_add); menu.add(0, 1, 4, "电话").setIcon(android.R.drawable.ic_menu_call); menu.add(0, 2, 3, "删除").setIcon(android.R.drawable.ic_menu_delete); menu.add(1, 3, 2, "编辑").setIcon(android.R.drawable.ic_menu_edit); menu.add(1, 4, 1, "日期").setIcon(android.R.drawable.ic_menu_day); menu.add(1, 5, 0, "照相机").setIcon(android.R.drawable.ic_menu_camera); }

⑴、在XML文件里面写好然后用一个菜单映射映射到函数内部

XML文件如下:

设置多选

 

在函数内部把XML文件映射进来

@Override	public boolean onCreateOptionsMenu(Menu menu) {{// xml添加菜单项			MenuInflater mif = this.getMenuInflater();			mif.inflate(R.menu.main_menu, menu);		}		return true;	}

 

处理选项菜单消息

@Override	public boolean onOptionsItemSelected(MenuItem item) {		switch (item.getItemId()) {		case 0:			System.out.println("===代码添加的菜单项的
<菜单项1>
选中了"); break; case 1: System.out.println("===代码添加的菜单项的
<菜单项2>
选中了"); break; case 2: System.out.println("===代码添加的菜单项的
<菜单项3>
选中了"); break; } return true; }

 

如果是用XML文件添加的菜单项则用ID号对消息进行处理

可以用系统菜单按钮打开菜单项,也可以自定义触发打开菜单项

openOptionsMenu();

 

1、 上下文菜单(ContextMenu)

创建和选项菜单一样有两种创建方式:自写和从XML文件加载

@Override    public void onCreateContextMenu(ContextMenu menu, View v,           ContextMenuInfo menuInfo) {       {// xml添加菜单项           MenuInflater mif = this.getMenuInflater();           mif.inflate(R.menu.main_menu, menu);       }    }

 

上下文菜单不能设置图标,对上下文菜单消息处理:

@Override	public boolean onContextItemSelected(MenuItem item) {		switch (item.getItemId()) {		case R.id.main_menu_item_1:			System.out.println("===xml添加的菜单项的
选中了"); break; case R.id.main_menu_item_2: System.out.println("===xml添加的菜单项的
选中了"); break; case R.id.main_menu_item_3: System.out.println("===xml添加的菜单项的
选中了"); break; } return true; }

 

上下文菜单用注册的方式来进行显示:

Button bt2 = (Button) findViewById(R.id.bt2);this.registerForContextMenu(bt2);

 

3.子菜单(Dialog)

触发子菜单显示的消息:

((Button) findViewById(R.id.bt1))				.setOnClickListener(new OnClickListener() {					@Override					public void onClick(View v) {//根据这个ID号来判断显示的是哪一个Dialog						Android_09_03Activity2.this.showDialog(1);					}				});	}

 

真正的对话框创建是在这里完成的:

@Override	protected Dialog onCreateDialog(int id) {		switch (id) {		case 1:			AlertDialog.Builder adb = new AlertDialog.Builder(this);			adb.setTitle("dialog的title")					// .setMessage("dialog的Message")					.setNeutralButton("中间按钮",							new DialogInterface.OnClickListener() {								@Override								public void onClick(DialogInterface dialog,										int which) {									dialog.dismiss();								}							})					.setPositiveButton("左确定",							new DialogInterface.OnClickListener() {								@Override								public void onClick(DialogInterface dialog,										int which) {									dialog.dismiss();								}							})					.setNegativeButton("右取消",							new DialogInterface.OnClickListener() {								@Override								public void onClick(DialogInterface dialog,										int which) {									dialog.dismiss();								}							})					// .setView(new EditText(Android_09_03Activity2.this))					.setIcon(android.R.drawable.ic_menu_help)					// .setSingleChoiceItems(					// new String[] { "item1", "item2", "item3", "item4" },					// 0, null);					// .setMultiChoiceItems(					// new String[] { "item1", "item2", "item3", "item4" },					// null, null);					.setItems(							new String[] { "item1", "item2", "item3", "item4" },							null);			adb.create().show();			break;		case 2:			break;		}		return null;	}

 

如上所述,在创建对话框的时候事件响应也都添加进去了。

转载于:https://www.cnblogs.com/totem1990/archive/2012/09/03/2669263.html

你可能感兴趣的文章
洛谷跑路
查看>>
使用DbProviderFactories.GetFactory方法需要配置数据库提供者
查看>>
Ubuntu || LinuxMint 配置apache虚拟主机
查看>>
HTML—链接
查看>>
将进程设置为守护进程
查看>>
用连接池提高Servlet访问数据库的效率
查看>>
luogu P1494 [国家集训队]小Z的袜子 ( 普 通 )
查看>>
树的数据结构
查看>>
MyEclipse导入Color Theme
查看>>
Vue开发微信H5 微信分享签名失败问题解决方案
查看>>
Linux - 配置SSH免密通信 - “ssh-keygen”的基本用法
查看>>
Python(2.7.6) glob - 匹配指定模式的文件
查看>>
HTTP - 持久连接
查看>>
添加路由时啥时候是dev啥时候是gw
查看>>
redis 中文字符显示
查看>>
登录日志分析常用查询
查看>>
Codeforces Round #228 (Div. 1) 388B Fox and Minimal path
查看>>
【nosql实现企业网站系列之一】mongodb的安装
查看>>
短信服务供应商价格总览
查看>>
获取本机IP(考虑多块网卡、虚拟机等复杂情况)
查看>>