当前位置: 移动技术网 > IT编程>移动开发>Android > 如何在XML中定义菜单

如何在XML中定义菜单

2019年07月24日  | 移动技术网IT编程  | 我要评论

哥伯尔,荣佑文,风流逍遥侯

和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中关于菜单的主题。
 演示的效果如图:

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网