未经允许禁止转载
Android的菜单按钮
1.使用xml的方式创建菜单项
a.在res下的menu目录下新建一个main.xml文件,以menu为根节点,添加一个item就是菜单项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
<
item
android:id
=
"@+id/action_go"
android:orderInCategory
=
"1"
android:title
=
"前进"
/>
<
item
android:id
=
"@+id/action_back"
android:orderInCategory
=
"2"
android:title
=
"后退"
/>
<
item
android:id
=
"@+id/action_refresh"
android:orderInCategory
=
"3"
android:title
=
"刷新"
/>
</
menu
>
|
b.在Activity中复写onCreateOptionsMenu方法,将一个资源转换成menu对象
1
2
3
4
5
6
7
8
|
//该方法用来初始化当前Activity的菜单项
@Override
public
boolean
onCreateOptionsMenu(Menu menu) {
//1.使用菜单填充器将一个菜单资源设置给menu对象
getMenuInflater().inflate(R.menu.main, menu);
return
true
;
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
//要想对菜单项设置点击事件需要复写一个方法
@Override
public
boolean
onMenuItemSelected(
int
featureId, MenuItem item) {
//获取当前点击的菜单项的Id
switch
(item.getItemId()) {
case
R.menu.action_back
:
Toast.makeText(getApplicationContext(),
"后退"
,
0
).show();
break
;
case
R.menu.action_go
:
Toast.makeText(getApplicationContext(),
"前进"
,
0
).show();
break
;
case
R.menu.refresh
:
Toast.makeText(getApplicationContext(),
"刷新"
,
0
).show();
break
;
}
return
super
.onMenuItemSelected(featureId, item);
}
|
2.使用代码的方式创建菜单
//在Activity中复写onCreateOptionsMenu方法,代码添加一个menu的选项 groupid:item所在的分组 itemId:选项id order:顺序 title:文本
menu.add(1, 0, 1, "前进");
1
2
3
4
5
6
7
8
9
10
11
|
@Override
public
boolean
onCreateOptionsMenu(Menu menu) {
/* //1.使用菜单填充器将一个菜单资源设置给menu对象
getMenuInflater().inflate(R.menu.main, menu);*/
//2.使用代码添加菜单项 groupId:分组Id itemId:菜单项的Id orderId:菜单顺序 title:
menu.add(
0
,
0
,
1
,
"前进"
);
menu.add(
0
,
1
,
2
,
"后退"
);
menu.add(
0
,
2
,
3
,
"刷新1"
);
return
true
;
}
|
2.2 在点击菜单选项的时候我们应该改成,与add()方法添加的 itemId 所对应。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
@Override
public
boolean
onMenuItemSelected(
int
featureId, MenuItem item) {
//获取当前点击的菜单项的Id
switch
(item.getItemId()) {
case
1
:
Toast.makeText(getApplicationContext(),
"后退"
,
0
).show();
break
;
case
0
:
Toast.makeText(getApplicationContext(),
"前进"
,
0
).show();
break
;
case
2
:
Toast.makeText(getApplicationContext(),
"刷新"
,
0
).show();
break
;
}
return
super
.onMenuItemSelected(featureId, item);
}
|
a.当menu按键点击时回调用onMenuOpend方法,会调用父类的防范返回一个true,我们可以直接返回false.不去调用系统的菜单
b.我们可以在该方法中定义我们自己的Dialog
1
2
3
4
5
6
7
8
9
10
11
|
/**当点击菜单按键时调用*/
@Override
public
boolean
onMenuOpened(
int
featureId, Menu menu) {
AlertDialog.Builder builder =
new
Builder(
this
);
builder.setTitle(
"aa"
);
builder.setMessage(
"bbb"
);
builder.show();
return
false
;
}
|