欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

如何在XML中定义菜单

程序员文章站 2024-03-03 21:13:46
和android ui layout一样,我们也可以在xml中定义应用程序的菜单。通过在菜单的oncreateoptionsmenu方法中膨胀菜单layout。这样做会使我...

和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中定义菜单

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