选项菜单
Android 4.0 系统中,Activity在创建时便会调用 onCreateOptionMenu() 函数初始化自身的菜单系统。在Activity的整个生命周期中,选项菜单是一直被重复利用的,直到 Activity被销毁。
Android程序的菜单可以在代码中动态生成,也可以使用XML文件制作菜单资源,然后通过 inflate() 函数映射到程序代码中。
1.使用 /res/menu/main.xml 初始化 Activity 的菜单
(1)/res/menu/main.xml
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.jhincheung.satomi.MainActivity" >
android:id = "@+id/main_menu_1"
android:icon = "@drawable/pic_01"
android:title = "File"/>
android:id = "@+id/main_menu_2"
android:icon = "@drawable/pic_02"
android:title = "Edit"/>
android:id = "@+id/main_menu_3"
android:icon = "@drawable/pic_03"
android:title = "Source"/>
说明:使用XML文件描述菜单
(2)MainActivity.java
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
说明:onCreateOptionMenu() 初始化菜单
@Override
public boolean onOptionsItemSelected(MenuItem item) {
TextView label = (TextView)findViewById(R.id.textView_1);
switch(item.getItemId()){
case R.id.main_menu_1:
label.setText("File-ID:"+item.getItemId());
return true;
case R.id.main_menu_2:
label.setText("Edit-ID:"+item.getItemId());
return true;
case R.id.main_menu_3:
label.setText("Source-ID:"+item.getItemId());
return true;
default:return false;
}
}
说明:
onOptionsItemSelected() 一般用于放置菜单选择事件的响应代码
通过 getItemId() 获得 MenuItem 的ID
onOptionsItemSelected() 的返回值表示是否需求其他事件处理函数菜单选择事件进行处理,不需要选择 true,否则选择 false
示例程序:
2.代码中动态生成菜单
MainActivity.java
final static int MENU_01 = Menu.FIRST;
final static int MENU_02 = Menu.FIRST+1;
final static int MENU_03 = Menu.FIRST+2;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
//getMenuInflater().inflate(R.menu.main, menu);
menu.add(0,MENU_01,0,"添加好友").setIcon(R.drawable.pic_01);
menu.add(0,MENU_02,0,"扫一扫").setIcon(R.drawable.pic_02);
menu.add(0,MENU_03,0,"付款").setIcon(R.drawable.pic_03);
return true;
}
说明:
一般将 ID 定义为静态变量,并使用 Menu.FIRST 定义第一个菜单子项
之后的菜单项仅需在 Menu.FIRST 增加相应的数值即可
onCreateOptionMenu() 返回值为 true 则可显示在函数中设置的菜单
menu.add() 第 1 个参数 groupID 是组ID,用以批量的对菜单子项进行处理和排序
menu.add() 第 2个参数 itemID 是子项ID,是每一个菜单子项的唯一标识
menu.add() 第 3 个参数 order 是定义菜单子项在菜单中的排列顺序
menu.add() 第 4 个参数 title 是菜单子项所显示的标题
setIcon() 函数可以为菜单子项添加图标
示例程序