从Android 3.0 开始,系统并不要求手机设备必须提供MENU按键,在这种情况下,使用ActionBar代替菜单。
Android同样支持上下文菜单,即 ContextMenu。
Menu只是一个父接口,它提供2个子接口
SubMenu:子菜单,可以包含1~N个MenuItem
ContextMenu:上下文菜单,可以包含1~N个MenuItem
不同菜单的特征:
选项菜单:不支持勾选标记,并且只显示浓缩标题。
子菜单:不支持菜单项图标,不支持嵌套子菜单。
上下文菜单:不支持菜单快捷键和图标。
Menu接口定义了如下方法添加子菜单或菜单项
MenuItem add(int titleRes):添加一个新的菜单项
MenuItem add(int groupid,int itemid,int order,int titleRes):添加一个新的处于groupid组的菜单项
MenuItem add(CharSequence title):添加一个新的菜单项
SubMenu addSubMenu(int titilRes):添加一个新的子菜单
SubMenu addSubMenu(int groupid,int itemid,int order,int titleRes):添加一个新的处于groupid组的子菜单
SubMenu addSubMenu(CharSequence title):添加一个新的子菜单
SubMenu addSubMenu(int groupid,int itemid,int order,CharSequence title):添加一个新的处于groupid组的子菜单
SubMenu继承了Menu,以下为常用方法,以下方法Menu,ContextMenu同样适用
setHeaderIcon(Drawable icon):设置菜单头的图标
setHeaderIcon(int icon):设置菜单头的图标
setHeaderTitle(int title):设置菜单头的标题
setHeaderTitle(CharSequence title):设置菜单头的标题
setHeaderView(View view):使用View设置菜单头
添加菜单或子菜单的步骤如下:
1:重写Activity的onCreateOptionsMenu(Menu menu),在该方法里调用Menu对象添加菜单或者子菜单
1:重写Activity的onCreateOptionsMenu(Menu menu),在该方法里调用Menu对象添加菜单或者子菜单
2:重写Activity的onOptionsItemSelected(MenuItem mi)即可。
除了第2步,还可以设置监听器监听选择事件
setOnMenuItemClickListener
创建多选菜单
setCheckable:设置菜单项可以勾选
setGroupCheckable:设置一组菜单勾选
创建快捷键
setAlphabeticShortcut:设置字母快捷键
setNumericShortcut:设置数字快捷键
setShortcut:同时设置两种快捷键
设置菜单启动别的程序
setIntent(Intent it);//测试过无效