06.Android之Menu

来源:互联网 发布:微信斗牛软件 编辑:程序博客网 时间:2024/04/28 08:02
 

根据Android的SDK文档,记下Menu的一些要点:

一、Menu概述:
默认情况下,每个Activity都支持一个可定制或可选的菜单。可以在该菜单添加元素和处理添加元素的点击事件。添加菜单项最简单的方式是在XML文件中通过MenuInflater填充菜单,这个最简单的方式通过onOptionsItemSelected(MenuItem)和onContextItemSelected(MenuItem)绑定点击功能代码。

二、不同的菜单类型有不同的表现,有如下几种菜单:
1.Contex menus:不支持菜单项快捷键(item shortcuts)和图标(icons)。
2.Options menus
其中的icon menus不支持确认项(check marks),仅仅显示菜单项的主标题(condensed title)。
其中的expanded menus(只有6个菜单项可见,想要更多的菜单项可见必须在icon menu中设置“More“属性)不支持菜单项图标(item icons),确认项(check marks)也是被阻止的。
3.Sub menus:不支持菜单项图标(item icons)和嵌套的子菜单。

三、Activity中跟菜单相关的方法介绍:
Menu的成员就不详细介绍了,下面是Activity中与菜单相关的方法列表:
closeContextMenu():
closeOptionsMenu():
getMenuInflater():
invalidateOptionsMenu():
onContextItemSelected(MenuItem item):
onContextMenuClosed(Menu menu):
onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo):
onCreateOptionsMenu(Menu menu):
onCreatePanelMenu(int featureId, Menu menu):
onMenuOpened(int featureId, Menu menu):
onOptionsItemSelected(MenuItem item):
onOptionsMenuClosed(Menu menu):
onPanelClosed(int featureId, Menu menu) :
onPrepareOptionsMenu(Menu menu):
onPreparePanel(int featureId, View view, Menu menu):
openContextMenu(View view):
openOptionsMenu():
registerForContextMenu(View view):

其中大多数方法都比较容易,只需要注意如下两个方法:
onCreateOptionsMenu(Menu menu):初始化Activity的标准选项菜单内容。
这个方法只在该选项菜单首次显示的时候被调用。每次显示的时候的菜单的修改在onPrepareOptionsMenu(Menu)方法里面。可以在该方法里面添加打印日志,可以看到日志记录的确只会被打印一次。
可以安全的持有该菜单(和它的元素),也可以做需要的修改,直到下次onCreateOptionsMenu()方法被呼叫。
当按下手机设备上的menu按钮时,该方法就被调用。

onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo):包含context菜单的view被显示的时候呼叫本方法。
跟onCreateOptionsMenu()方法不同,onCreateContextMenu()在每次context菜单被显示的时候都会被调用并且每次都填充view。
View被创建的时候就会调用该方法,该方法返回后,持有该context菜单是不安全的。

 

 

原创粉丝点击