Android实现菜单

Android的菜单一般是分为两部分. xml编辑菜单的内容, java代码中启用菜单.

XML菜单文件

Menu是Android定义的菜单XML布局文件, 指定在menu文件下

根节点必须是

子节点分为三种:

item

单一条目, 只能包含子节点

1
2
3
4
5
6
<item android:title="更多">
<menu>
<item android:title="设置"/>
<item android:title="关于"/>
</menu>
</item>

只能包含子节点, 自身只能是的子节点

group

只能包含子节点, 目的使可以统一设置属性, 同时自身也只能是Menu的子节点

设置菜单

重写activity中的方法创建菜单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/**
* 通过该方法创建菜单
*
* @param menu
* @return
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 直接填充menu
getMenuInflater().inflate(R.menu.toolbar_menu, menu);
// 通过代码添加菜单选项, 其重载方法可以设置更加复杂的菜单选项
menu.add("添加");
// 返回true显示菜单, false则不显示, 这里是默认返回true
return super.onCreateOptionsMenu(menu);
}
/**
* 在菜单被打开和菜单所在的界面被打开时都会执行该方法
*
* @param menu
* @return
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
return super.onPrepareOptionsMenu(menu);
}
/**
* 菜单被关闭, actionbar和toolbar不执行该方法
*
* @param menu
*/
@Override
public void onOptionsMenuClosed(Menu menu) {
super.onOptionsMenuClosed(menu);
}
/**
* 菜单的选项被点击
* @param item
* @return
*/
@Override
public boolean onOptionsItemSelected(MenuItem item) {
return super.onOptionsItemSelected(item);
}