本章节翻译自《Beginning-Android-4-Application-Development》,如有翻译不当的地方,敬请指出。
原书购买地址http://www.amazon.com/Beginning-Android-4-Application-Development/dp/1118199545/菜单可以用来显示额外的选项,这些选项也不必出现在主界面中。在Android框架中,主要有2种菜单:
左侧是 选项菜单,右侧是 上下文菜单。
在使用这两种菜单之前,我们先介绍一下两个辅助方法。一个用来填充菜单中的选项列表,另一个用来处理菜单的选中事件。
1. 创建一个工程:Menus。
2. MenusActivity.java中的代码。
public class MenusActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } private void CreateMenu(Menu menu) { menu.setQwertyMode(true); MenuItem mnu1 = menu.add(0, 0, 0, "Item 1"); { mnu1.setAlphabeticShortcut('a'); mnu1.setIcon(R.drawable.ic_launcher); } MenuItem mnu2 = menu.add(0, 1, 1, "Item 2"); { mnu2.setAlphabeticShortcut('b'); mnu2.setIcon(R.drawable.ic_launcher); } MenuItem mnu3 = menu.add(0, 2, 2, "Item 3"); { mnu3.setAlphabeticShortcut('c'); mnu3.setIcon(R.drawable.ic_launcher); } MenuItem mnu4 = menu.add(0, 3, 3, "Item 4"); { mnu4.setAlphabeticShortcut('d'); } menu.add(0, 4, 4, "Item 5"); menu.add(0, 5, 5, "Item 6"); menu.add(0, 6, 6, "Item 7"); } private boolean MenuChoice(MenuItem item) { switch (item.getItemId()) { case 0: Toast.makeText(this, "You clicked on Item 1", Toast.LENGTH_LONG) .show(); return true; case 1: Toast.makeText(this, "You clicked on Item 2", Toast.LENGTH_LONG) .show(); return true; case 2: Toast.makeText(this, "You clicked on Item 3", Toast.LENGTH_LONG) .show(); return true; case 3: Toast.makeText(this, "You clicked on Item 4", Toast.LENGTH_LONG) .show(); return true; case 4: Toast.makeText(this, "You clicked on Item 5", Toast.LENGTH_LONG) .show(); return true; case 5: Toast.makeText(this, "You clicked on Item 6", Toast.LENGTH_LONG) .show(); return true; case 6: Toast.makeText(this, "You clicked on Item 7", Toast.LENGTH_LONG) .show(); return true; } return false; } }
CreateMenu()方法,接收一个Menu类型的参数,并且向这个参数中添加一些菜单项。
想要添加一个菜单项,我们就要创建一个MenuItem类的实例,然后使用Menu对象的add()方法。
MenuItem mnu1 = menu.add(0, 0, 0, "Item 1"); { mnu1.setAlphabeticShortcut('a'); mnu1.setIcon(R.drawable.ic_launcher); }add()方法有4个参数,我一一来解释:
另外,我们也可以使用setAlphabeticShortcut()方法去设置一个快捷键。这样就可以使用键盘去选择一个菜单项。
setIcon() 方法可以为菜单项去设置一个图片。
最后,MenuChoice()方法接收一个MenuItem类型的参数,然后检查它的id去判断到底是哪个菜单项被选中了,并且弹出一个Toast通知去告诉用户他选中了哪个菜单项。