快捷搜索:

Android Menus 2

1.Options Menu.

经由过程按下手机上的MENU键,可以打开Options Menu。Options Menu最多只能在屏幕最下面显示6个菜单项,称为Icon Menu.假如添加了多于6个的菜单项,将经由过程"More"菜单项显示,这种称为Expanded Menu.当Options Menu第一次被打开时,系统将调用Activity的onCreateOptionsMenu(Menu menu)措施,在这个措施中可以经由过程设置设置设备摆设摆设一个XML文件,或者调用Menu的add()措施来添加你想要的Menu。Menu的add()措施将返回一个MenuItem工具,你用经由过程这个工具来设置设置设备摆设摆设一些其他属性。比如:icon,shortcut,intent。Menu的add()措施很多,要留意的是itemId这个参数,它的独一性。

被选择了一个Options Menu时,会调用onOptionsItemSelected(MenuItem item)措施。假如想改动Options Menu,必要重写onPrepareOptionsMenu()措施。

用add()添加:

/* Creates the menu items */

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(0, MENU_NEW_GAME, 0, "New Game");

menu.add(0, MENU_QUIT, 0, "Quit").setIcon(R.drawable.menu_quit_icon);

return true;

}

/* Handles item selections */

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case MENU_NEW_GAME:

newGame();

return true;

case MENU_QUIT:

quit();

return true;

}

return false;

}

经由过程XML文件添加:

在res/menu/下新建options_menu.xml文件:

在onCreateOptionsMenu()措施中,我们这样写:

public boolean onCreateOptionsMenu(Menu menu) {

MenuInflater inflater = getMenuInflater();

inflater.inflate(R.menu.options_menu, menu);

return true;

}

2.Context Menu.

它必要注册到某个View工具上,当长按这个View大年夜概2秒光阴,会呈现这个Context Menu。为某个View注册Context Menu是用registerForContextMenu(View view)措施来实现。Context Menu在显示前都邑调用onCreateContextMenu来天生menu。onContextItemSelected用来处置惩罚选中的菜单项。留意:Context Menu不支持icons和shortcut keys.

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) {

super.onCreateContextMenu(menu, v, menuInfo);

menu.add(0, EDIT_ID, 0, "Edit");

menu.add(0, DELETE_ID, 0,"Delete");

}

public boolean onContextItemSelected(MenuItem item) {

AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();

switch (item.getItemId()) {

case EDIT_ID:

editNote(info.id);

return true;

case DELETE_ID:

deleteNote(info.id);

return true;

default:

return super.onContextItemSelected(item);

}

}

注册这个Context Menu:

registerForContextMenu(getListView());

这里的 getListView()是ListActivity的措施,它将返回一个ListView.记着任何一个View工具都可以注册一个Context Menu。

3.Submenus

public boolean onCreateOptionsMenu(Menu menu) {

boolean result = super.onCreateOptionsMenu(menu);

SubMenu fileMenu = menu.addSubMenu("File");

SubMenu editMenu = menu.addSubMenu("Edit");

fileMenu.add("new");

fileMenu.add("open");

fileMenu.add("save");

editMenu.add("undo");

editMenu.add("redo");

return result;

}

4.Menu Features

Menu groups 菜单项分组的功能:

在用Menu的add()措施时,经由过程参数groupId的设置可以实现分组。setGroupVisible()用来显示或者暗藏你的菜单组。setGroupEnabled()用来启用或者禁用你的菜单组。setGroupCheckable()用来设置你的菜单项是否可选。 setGroupCheckable()措施有三个参数int group, boolean checkable, boolean exclusive。第一个参数是要设置的组,第二个参数是否可选,第三个参数为true表示单选,false表示多选。

Shortcut keys 快捷键:

我们还可以设置快捷键。应用setAlphabeticShortcut(char),setNumericShortcut(int),setShortcut(char,int)可以设置字符,数字,组合(字符+数字)键。留意:Context Menu不能添加快捷键。

转自:http://oldman.javaeye.com/blog/709254

您可能还会对下面的文章感兴趣: