在一个界面Activity中,在手机下含有一个menu的按钮,点击一个menu按钮,则会弹出菜单选项。而在Android中,menu的编写却不同于一般的控件方法,不res/layout下的xml中添加相应的控件,而是在res/menu下相应的xml文件中编写菜单的。
首先需要了解一个类MenuInflater用来解析res/menu下的菜单布局文件。在Activity类中有一个getMenuInflater()的函数用来返回这个Activity的MenuInflater,并通过MenuInflater对象来设置menu XML里的menu作为该Activity的菜单。其具体代码如下所示:
- public boolean onCreateOptionsMenu(Menu menu)
- {
- MenuInflater inflater=this.getMenuInflater();
- //设置menu界面为res/menu/menu.xml
- inflater.inflate(R.menu.menu, menu);
- return true;
- }
public boolean OnCreateOptionsMenu(Menu menu)是Activity中的创建选择类型菜单的函数,通过这个函数可以创建菜单,而创建菜单项的方式不单可以通过创建xml的menu文档的方式,也可以直接在该函数下编写代码,比如像这样:menu.add(0,0,0,"关于");menu.add(0,1,1,"返回");
最后是选择菜单项的事件监听,同样在Activity类中提供这样的一个函数:boolean onOptionsItemSelected(MenuItem item),其中item是当前选中的菜单项。
在Activity类中,关于菜单的一些函数列举如下:
void closeOptionsMenu();----利用编程的方式关闭选择项式的菜单。
MenuInflater getMenuInflater();----在当前的界面context中返回一个承载当前界面的menu的MenuInflater。
boolean onCreateOptionsMenu(Menu menu);----用来初始化Activity的标准化的选择菜单的内容。
boolean onOptionsItemSelected(MenuItem item);----事件处理,当菜单里的一个选项被选中发生。
void onOptionsMenuClosed(Menu menu);----事件处理,当菜单被closed时会调用这个函数。
void openOptionsMenu();----利用编程的方式打开Options型的菜单。