Android
系统中有三种菜单
-----Contex Menus
,情境菜单:不支持菜单快捷键和图标。
Options Menus
,选项菜单:支持图标,但不支持菜单项选中标记。
Sub menus
,子菜单,不支持图标,不能再有子菜单。
OptionsMenus
:
通过菜单快捷键触发,由
Activity
的
onCreateOptionsMenu(Menu)
方法创建。
ContexMenus
:
由
Activity
的
onCreateContextMenu(ContextMenu, View ,ContextMenuInfo)
创建,创建该
Menu
必须对指定的
View
进行注册,方法是:
registerForContextMenu(view)
。
SubMenus
:
以上两种
Menu
都可以嵌入子菜单,当时子菜单中不能嵌入子菜单
下面主要是介绍解析指定
XML
成
Menu
对象
MenuInflater:
用于将
xml
解析成
Menu
工具类,通过
Activity
的
getMenuInflater()
方法可以过得该对象:
MenuInflater inflater = getMenuInflater();
让后通过该对象解析指定的对象
inflater.inflate(int,Menu);
int:
表示
xml
文件的资源
id
Menu:
表示将
xml
解析成的
Menu
对象,
xml
文件中的元素或者
subMenu
都被添加到该
Menu
中去。
Menu
元素监听
OptionMenu
菜单:
onOptionsItemSelected(MenuItem)
ContextMenus
菜单:
onContextItemSelected(MenuItem)
,另外也可以通过重写
View
的
onCreateContextMenu
方法来注册该
View
的
Menu
事件
其中
MenuItem
表示用户选中的菜单的元素,可以通过
MenuItem
的
Id
来辨别每个
Item
的操作事件,也可以通过
Item
的
GroupID
来确定操作事件。
例如:
public
boolean
onOptionsItemSelected(MenuItem item) {
switch
(item.getItemId()) {
case
R.id.
jump
:
Toast.makeText(
this
,
"Jump up in the air!"
, Toast.
LENGTH_SHORT
).show();
return
true
;
}
}
Menu(
主要方法
)
hasVisibleItems
()
:判断该
Menu
中是否有元素是可见的
findItem
(int id)
:找到指定的
ID
的
Item
isShortcutKey
(int,
KeyEvent
)
:为该
Menu
设置一个快捷键,
int
表示快捷键的字符码
removeGroup
(int)
:移除指定的
ID
组的
item
removeItem
(int)
:移除指定
id
的
Item
在
Xml
文件中定义
Menu
Menu
的
xml
文件一定要放在
res/menu
目录下面
Xml
文件由
menu
标签、
group
标签、
Item
标签组成
Menu
:
xml
文件的根目录
Group
:定义该
menu
的
group
属性
Item
:定义该
menu
中
item
的属性
android:id
:表示该
group
和
item
的
id
号
android:checkableBehavior
:表示在
group
下面的
item
可选的元素
single
:表示单一选择
all
:表示所有元素都被选择
none
:表示没有元素被选择
android:visible
:表示
group/item
是否可见
android:enabled
:表示
group/item
是否被激活
android:title
:
Item
的主题内容
android:icon
:表示
Item
的图像
android:checked
:表示该
item
被选
android:alphabeticShortcut/android:numericShortcut
:表示
item
的快捷键设置、
如下代码:
< menu xmlns:android ="http://schemas.android.com/apk/res/android" >
< group android:id ="@+id/group"
android:checkableBehavior ="single"
android:visible ="true"
android:enabled ="true"
>
< item android:id ="@+id/jump"
android:title ="@string/jump"
android:alphabeticShortcut ="s"
/>
< item android:id ="@+id/dive"
android:title ="@string/dive" />
</ group >
</ menu >