Android 用户界面菜单MenusWord文档下载推荐.docx
《Android 用户界面菜单MenusWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《Android 用户界面菜单MenusWord文档下载推荐.docx(17页珍藏版)》请在冰豆网上搜索。
当给Android3.0和更高的版本开发应用程序时,你应该改用上下文动作模式(contextualactionmode)来确保被选内容的动作。
这种模式把影响选择内容的动作项目显示在屏幕顶部的一个横条中,并允许用户选择多个项目。
弹出菜单
一个弹出菜单在一个垂直列表中显示项目的列表,它靠在调用这个菜单的View对象旁边。
它对给相关指定内容提供动作的展现或给一个命令的第二部分提供选项是有好处的。
弹出菜单中的动作不应该直接影响对应的内容,相反,弹出菜单是为了扩展Activity中相关内容区域的动作而设计的。
在XML中定义一个菜单
对于所有的菜单类型,Android提供了标准的XML格式来定义菜单项目。
你应该在一个XML菜单资源中定义一个菜单和它的所有的项目,而不是在你Activity代码中创建一个菜单。
然后你就能够把菜单资源作为一个Menu对象加载到Activity或Fragment对象中。
由于以下原因,使得使用菜单资源是一个好的实践选择:
1.更容易看清XML文件中的菜单结构;
2.它把针对菜单的内容和应用程序的行为代码给分离开了;
3.它允许你针对不同的平台版本、屏幕尺寸和其他的被应用资源框架利用的配置来创建可选的菜单配置。
要定义菜单,就要在你的项目内部的res/menu/目录内部创建一个XML文件,并且要使用下列元素来构建菜单:
<
menu>
定义一个菜单,它包含菜单项。
元素必须是这个文件的根节点,并且能够拥有多个<
item>
和<
group>
元素。
创建一个MenuItem对象,它代表了一个菜单中的单独项目。
为了创建一个子菜单,这个元素可以包含一个嵌套的<
一个可选的针对<
元素的非可见容器。
它允许把菜单项分类,以便它们共享诸如活动状态和可见性等属性。
以下是一个名叫game_menu.xml的菜单:
?
xmlversion="
1.0"
encoding="
utf-8"
>
menuxmlns:
android="
<
itemandroid:
id="
@+id/new_game"
android:
icon="
@drawable/ic_new_game"
title="
@string/new_game"
showAsAction="
ifRoom"
/>
@+id/help"
@drawable/ic_help"
@string/help"
/>
/menu>
元素支持以下几个用于定义菜单项的外观和行为的属性:
android:
id
菜单项的唯一资源ID,在用户选择这个菜单项时,应用程序能够用这个ID来识别它。
icon
指向一个可描画的资源,用作这个菜单项的图标。
title
指向一个用作菜单标题的字符串。
showAsAction
指明这个菜单项作为操作栏(actionbar)中的一个动作项应该显示的时机和方式。
以上只是你应该使用的最重要的属性,但是还有一些有效的属性。
有关菜单支持的所有属性信息,请看“菜单资源”的文档。
你能够给菜单中的任意一个项目(子菜单除外)添加一个子菜单,通过把<
元素作为<
元素的一个子元素方式来添加。
当应用程序中有很多能够被组织到一个专题中的功能时,子菜单是有益的,就像PC应用程序的菜单栏中的项目(File、Edit、View等)一样,如:
@+id/file"
@string/file"
>
!
--"
file"
submenu-->
@+id/create_new"
@string/create_new"
@+id/open"
@string/open"
/item>
要在Activity中使用菜单,你需要使用MenuInflater.inflate()方法来加载菜单资源(把XML资源转换成可编程对象)。
在下列章节中,你会看到每种类型菜单的创建方法。
创建一个选项菜单
选项菜单应该是包含动作和与当前Activity上下文环境相关的其他选项,如:
“搜索”、“编写电子邮件”、和“设置”等。
选项菜单中项目在屏幕上显示的位置依赖与你的应用程序所依赖的Android平台版本:
1.如果你的应用程序依赖Android2.3.x(API级别10)或更低的版本,那么当用户按下Menu按钮时,你的选项菜单内容会显示在屏幕的底部,如图1所示:
当菜单被打开时,首先看到的是图标菜单,它们被六个菜单项持有。
如果你的菜单包含的菜单项目大于6,那么Adroid会放入第六个项目并把其余的项目放到溢出菜单中,用户能够同选择更多的菜单项来打开其余的菜单项。
图1.Android2.3上的浏览器的可选菜单
2.如果你的应用程序依赖Android3.0(API级别11)或更高的版本,可先菜单的项目在操作栏(actionbar)中是有效的。
默认情况下,系统会把所有的项目放到动作溢出中,用户能够在操作栏(actionbar)的右边看到动作溢出图标(或者,如果Menu按钮有效,按下设备的Menu按钮也可以)。
要让重要的动作快速访问,你能够通过在<
元素中添加android:
showAsAction=”ifRoom”属性设置,把一些菜单项目放到操作栏中显示。
注意:
即使你的应用不依赖Android3.0或更高的版本,你也能够构建自己的操作栏(actionbar)来模仿类似的效果。
图2.HoneycombGallery应用程序的操作栏,显示了导航标签和照相机动作项(被加在动作溢出按钮上)
HoneycombGallery应用程序网址:
你既可以给Activity子类,也可以给Fragment子类声明选项菜单项目。
如果Activity和Fragment都声明了选项菜单项目,它们会在UI中组合到一起。
Activity的选项菜单会首先显示,紧接着按照每个Fragmeng被添加的顺序来显示Fragment的选项菜单。
如果需要,你能够在每个需要移动的<
元素中用android:
orderInCategory属性来重新指定选项菜单的顺序。
要给一个Activity指定选项菜单,需要重写onCreateOptionsMenu()方法(Fragment也提供它们自己的onCreateOptionsMenu()方法)。
在这个方法中,能够把菜单资源(在XML文件中定义)加载到这个回调方法提供的Menu对象中。
如:
@Override
publicbooleanonCreateOptionsMenu(Menumenu){
MenuInflaterinflater=getMenuInflater();
inflater.inflate(R.menu.game_menu,menu);
returntrue;
}
你也能够使用add()方法来添加菜单项,并且用findItem()方法获取要用MenuItemAPIs修改属性的菜单项。
如果你的应用程序依赖Android2.3.x或更低的版本,系统会在用户首次打开这个菜单时,调用onCreateOptionsMenu()方法来创建选项菜单。
如果你的应用程序依赖Android3.0或更高的版本,系统会在启动Activity时调用onCreateOptionsMenu()方法,以便把选项菜单显示在操作栏(actionbar)中。
处理click事件
当用户选择了选项菜单中的一个菜单项(包括操作栏(actionbar)中动作),系统会调用Activity的onOptionsItemSelected()方法。
这个方法把选择的菜单项作为参数来传递。
你能够通过调用getItemId()方法来识别菜单项,这个方法返回了对象菜单项的唯一ID(这个ID是在菜单资源的android:
id属性中定义的,或者是传递给add方法的一个整数)。
你能够把这个ID与已知的菜单项匹配,让它执行对应的动作,如:
publicbooleanonOptionsItemSelected(MenuItemitem){
//Handleitemselection
switch(item.getItemId()){
caseR.id.new_game:
newGame();
caseR.id.help:
showHelp();
default:
returnsuper.onO