4.4.1 创建菜单
菜单是任何应用程序的重要组成部分。他们提供熟悉的界面,而且可以发现应用程序的功能和设置。Android提供了一个简单的编程接口为开发者提供标准化的应用程序菜单中的各种情况。
Android提供了三种基本类型的应用程序菜单:
l Options Menu
这是菜单的主要设置方式在一个Activity中。根据设备的MENU按键,选项菜单可以分两组:
m Icon Menu
这是最初可见的项目在按MENU(菜单)键在屏幕下方的收集。它最多支持6个菜单项。这是唯一的,支持图标的菜单项不支持复选框或单选按钮菜单项。
m Expanded Menu
这是公开的图标菜单的“更多”菜单项,从一个垂直列表中的项目。它的存在,是因为当图标菜单超过6时,隐藏其余不能显示的菜单。
l Context Menu
这是一个浮动的菜单项列表,当您在视图上长按可能会出现(如列表项)。
l Submenu
这是一个浮动的“选项”菜单或上下文菜单中的项目显示的菜单项列表。不支持嵌套子菜单项的子菜单。
4.4.2 选项菜单
“选项”菜单中的Android用户界面的组件,它提供了标准化的菜单。它是按设备MENU键打开。当打开时,菜单会出现在屏幕的底部。显示包含6个菜单项的图标菜单。如果超过6个项目添加到“选项”菜单,然后那些不适合在图标菜单,在展开的菜单中显示,通过“更多”菜单项时自动添加有超过六个项目的展开的菜单中。
“选项”菜单中,我们应包括基本的应用功能和任何必要的导航项目(例如,主屏幕或应用程序设置)。我们还可以添加子菜单为筹办主题和包括额外的菜单功能。
当第一次打开此菜单时,Android系统会调用活动onCreateOptionsMenu()回调方法。重写此方法,在我们的活动,给我们填充Menu对象。注入(inflating)的菜单资源,在XML中定义,或通过调用add()的每个项目,我们希望在菜单中,我们可以填充菜单。此方法添加一个菜单项,并返回新创建的对象。我们可以使用返回的菜单项设置的附加属性,如一个图标,键盘快捷键,Intent,和其他设置的项目。
有多个add()方法。通常情况下,我们将要使用一个,接受ITEMID参数。这是一个独特的整数,使我们能够确定该项目在回调。
从选项菜单中选择一个菜单项时,我们会收到一个回调的onOptionsItemSelected()方法在我们的Activity。这个回调传给我们已选定的菜单项。通过getItemId()我们可以识别出该项目通过要求的ITEMID的,然后分配add()方法的返回值为下一个ID。一旦我们确定了菜单项,我们可以采取适当的响应。
4.4.3 创建一个选项菜单
Activity的选项菜单不是建立在onCreate()中,反而需要实现onCreateOptionsMenu()。这个回调函数接收Menu的一个实例。
我们应该做的第一件事是继承超类(super.onCreateOptionsMenu(menu)),因此Android框架,可以添加在任何菜单中选择它认为是必要的。然后,我们可以添加我们自己的选择。
如果我们需要在我们的Activity调整菜单,如禁用当前无效的菜单选择,只要紧紧抓住我们收到的onCreateOptionsMenu()菜单实例。另外,我们可以实现onPrepareOptionsMenu(),它被调用仅在显示菜单之前的每个被请求时。