如何在XML中定义菜单_Android

和Android UI layout一样,我们也可以在XML中定义应用程序的菜单。通过在菜单的onCreateOptionsMenu方法中膨胀菜单layout。这样做会使我们的程序代码简单多了,而且尽可能的将更多的界面设计部分放到XML,便于浏览。

1. 在工程的/res/文件夹下创建menu文件夹,用来保存你为应用程序定义的菜单XML文件。
在菜单XML layout中,有三个有效的元素:menu、group、item。item和group必须是menu的子元素,且item必须是group的子元素。另外的menu可以是item的子元素(为了创建子菜单)。下面的XML片段显示了菜单的层次定义: 

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:title="Play" android:id="@+id/media_play"
 android:icon="@android:drawable/ic_media_play"/>
<item android:title="Pause" android:id="@+id/media_pause"
 android:icon="@android:drawable/ic_media_pause"/>
<item android:title="File" android:id="@+id/file">
<menu>
<item android:title="Open..." android:id="@+id/file_open"/>
<item android:title="Save" android:id="@+id/file_save"/>
<item android:title="Save as" android:id="@+id/file_saveas"/>
<item android:title="Exit" android:id="@+id/file_exit"/>
</menu>
</item>
<item android:title="Edit" android:id="@+id/edit">
<menu>
<group>
<item android:title="Copy" android:id="@+id/edit_copy"/>
<item android:title="Paste" android:id="@+id/edit_paste"/>
<item android:title="Cut" android:id="@+id/edit_cut"/>
<item android:title="Delete" android:id="@+id/edit_delete"/>
</group>
</menu>
</item>
</menu>

2. 重写Activity的onCreateOptionsMenu方法,通过MenuInflater.inflate方法来膨胀菜单XML。
 MenuInflater inflater = getMenuInflater();
 inflater.inflate(R.menu.menu_option, menu); 

3. 在Activity的onOptionsItemSelected方法中处理每个菜单项的点击事件:

 @Override
public boolean onOptionsItemSelected(MenuItem item) {
super.onOptionsItemSelected(item);
switch (item.getItemId()) {
case R.id.media_play:
break;
case R.id.media_pause:
break;
case R.id.file_open:
break;
case R.id.file_save:
…
}
return true;
}

 在XML可以定义菜单项的图标、快捷键、checkbox等更多特征,了解更多请查阅SDK中关于菜单的主题。
 演示的效果如图:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索XML中定义菜单
, XML定义菜单
XML菜单
excel xml自定义菜单、android自定义xml属性、android自定义控件xml、android ids.xml 定义、android 自定义xml,以便于您获取更多的相关知识。

时间: 2024-05-20 19:28:37

如何在XML中定义菜单_Android的相关文章

如何在XML中定义菜单

和Android UI layout一样,我们也可以在XML中定义应用程序的菜单.通过在菜单的onCreateOptionsMenu方法中膨胀菜单layout.这样做会使我们的程序代码简单多了,而且尽可能的将更多的界面设计部分放到XML,便于浏览. 1. 在工程的/res/文件夹下创建menu文件夹,用来保存你为应用程序定义的菜单XML文件. 在菜单XML layout中,有三个有效的元素:menu.group.item.item和group必须是menu的子元素,且item必须是group的子

JSP取得在WEB.XML中定义的参数

js|web|xml 在WEB.XML文件中设置参数: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <we

symbian资源文件中定义菜单

在资源文件中定义菜单十分简单有如下几步: 第一步,在 EIK_APP_INFO 中定义一个菜单条,如下: RESOURCE EIK_APP_INFO { menubar = r_main_menubar; } EIK_APP_INFO 代理的是 symbian 的一个应用程序. 上面这段整体的意思就是,在当前应用程序下,设置一个主菜单条,这个菜单条的名子为: r_main_menubar 第二步,说明主菜单条是由什么组成的 RESOURCE MENU_BAR r_main_menubar { t

android开发-自定义roundProgressBar,在xml中定义组件属性,无法生效

问题描述 自定义roundProgressBar,在xml中定义组件属性,无法生效 我从网上找到了自定义roundProgressBar的代码,使用之后,发现在xml中定义组建的属性没有作用,生成的roundProgressBar只是使用了默认配置 attributes: <!-- max 最大进度 startAngle 进度从圆环的哪个角度开始走 backColor 圆环内部的填充色 roundColor 圆环的颜色 roundProgressColor 圆环进度的颜色 roundWidth

link环境下,如何在codefirst中定义枚举表?枚举表的定义是怎样实现的?

问题描述 link环境下,如何在codefirst中定义枚举表?枚举表的定义是怎样实现的? link环境下,如何在codefirst中定义枚举表?枚举表的定义是怎样实现的? 解决方案 https://msdn.microsoft.com/zh-cn/data/hh859576

JSP取得在WEB.XML中定义的参数_XML/RSS

在WEB.XML文件中设置参数: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> 

小技巧:如何在Frontpage中定义CSS样式?

css|frontpage|技巧 当很多人发现在DW4中定义CSS很方便的时候,开始报怨FP2000不能定义CSS,甚至就此抨击FP2000如何的不好.事实上,在FP2000中定义CSS是很容易的,甚至在某些方面比DW4中定义更方便! 定义HTML标记的样式 在Frontpage2000下,选择菜单"格式/样式",会弹出一个定义样式的窗口,在CSS列表下拉菜单(位于左下)中,选"所有的HTML标记", 这时在左边的列中会出现大部分常用的HTML标记,选中一个,然后点

如何在CorelDraw中定义Word中的文本框

问:Coreldraw中如何设置WORD类型的文本框? 在Coreldraw里可以像word里那样改变文本框的类型吗?比如说改虚线或者删除,在coreldraw里的文本框只是属于辅助线吗? 答:不可以,CorelDraw中的虚线段落文本框实际上是不存在的,它是作为一个定位和排版文字的辅助工具存在,在任何输出结果上都是看不到的. 如果需要文本框要自己动手画上去,而且跟文字是脱离的,文字的改变后需要手动调整文本框的尺寸. 另外,亦可以先画好需要的框架,然后点击文本输入工具,在此框架中单击,即会自动生

如何在.NET中定义一个变量用于存储多次运行一个页面进行的运算

问题描述 例如做一个工资计算器,同页面运行计算器,点击计算按钮3次,将每次合计的数保存下来,最后点击总计时出现3次合计总和.类似这种储存数据的变量怎么定义??? 解决方案 解决方案二:可用js或者隐藏的控件或者服务器缓存或者cookie之类的解决方案三:加入我要存储数据的是一个DATATABLE那怎么办....解决方案四:序列化...解决方案五:能不能给个例子..有点虚幻...