Android 之 选项菜单Option Menu
程序员文章站
2022-05-16 23:33:58
...
使用菜单资源:
概述:Android中的菜单分为选项菜单、上下文菜单和子菜单;
选项菜单:option menu:最常见的菜单,当用户单击设备上的menu按钮的按键时,
弹出的就是选项菜单;
上下文菜单(context menu):android中长按控件后出现的菜单;
子菜单(sub menu):android中点击子菜单将弹出悬浮窗口显示子菜单项,子菜单不
支持嵌套;
菜单的创建方式:1、布局文件中声明创建; 2、在代码中创建;
选项菜单:
点击设备上Menu弹出的菜单;
所用知识点:
menu.add(groupId, itemId, order, title);
参1:组号,android可以给菜单分组,分组能更加方便快捷的操作同一组菜单;
参2: 指定每个菜单项的唯一ID号,可自定义也可系统分配;
用途:在响应菜单的时候要通过ID来判断哪个菜单借点被点击了;(可通过资源文件进行)
参3:菜单项的显示序号,编号小的位置在前面
注:选项菜单一个页面最多只能显示六个 , 如果多于六个那么系统会自动的生成more按钮,点击可以看到未显示的菜单项;
案例:添加7个选项菜单,并实现点击菜单后提示用户点击的是哪个菜单;
在程序中实现:
java代码:
/*选项菜单:创建选项菜单*/
public boolean onCreateOptionsMenu(Menu menu) { /* 添加菜单项的内容 */ menu.add(Menu.NONE, 0, 1, "menu1"); menu.add(Menu.NONE, 1, 2, "menu2"); menu.add(Menu.NONE, 2, 3, "menu3"); menu.add(Menu.NONE, 3, 4, "menu4"); menu.add(Menu.NONE, 4, 5, "menu5"); menu.add(Menu.NONE, 5, 6, "menu6"); menu.add(Menu.NONE, 6, 7, "menu7"); menu.add(Menu.NONE, 7, 8, "menu8"); return true; } 效果如图: 消息响应: 上述的代码只是完成了选项菜单的界面并没有对菜单项进行消息响应;android中提供了多种响应 菜单方式; 1、重写activity类的onOptionsItemSelected(MenuItem)回调方法; java代码如下: /* 选项菜单: 用于写事件的方法 *//* 参数介绍:MenuItem 表示的是菜单项 */ public boolean onOptionsItemSelected(MenuItem item) { /* 获取菜单项的ID */ int temp = item.getItemId(); /* 通过ID 获取指定选项菜单项,并执行该菜单项对应的操作 */ /* 代码创建菜单的消息响应 */ switch(temp){ case 0: Toast.makeText(MainActivity.this, "menu1", 1000).show(); break; case 1: Toast.makeText(MainActivity.this, "menu2", 1000).show(); break; case 2: Toast.makeText(MainActivity.this, "menu3", 1000).show(); break; } /* 响应消息 方法回调 */ return super.onOptionsItemSelected(item); }
效果如图:
------------------------------------------------------------------------
xml布局实现选项菜单:
xml布局:
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/one" android:enabled="true" android:title="menu1" android:visible="true"/> <item android:id="@+id/two" android:enabled="true" android:title="menu2" android:visible="true"/> <item android:id="@+id/three" android:enabled="true" android:title="menu3" android:visible="true"/> </menu> java中代码: /*选项菜单:创建选项菜单*/ public boolean onCreateOptionsMenu(Menu menu) { /* xml 布局实现选项菜单 */ MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.main, menu); return true; } /* 选项菜单: 用于写事件的方法 *//* 参数介绍:MenuItem 表示的是菜单项 */ public boolean onOptionsItemSelected(MenuItem item) { /* 获取菜单项的ID */ int temp = item.getItemId(); /* xml布局菜单的消息响应 */ switch(temp){ case R.id.one: Toast.makeText(MainActivity.this, "menu1", 1000).show(); break; case R.id.two: Toast.makeText(MainActivity.this, "menu2", 1000).show(); break; case R.id.three: Toast.makeText(MainActivity.this, "menu3", 1000).show(); break; } /* 响应消息 方法回调 */ return super.onOptionsItemSelected(item); } }