我觉得menu是如今android开发中肯定会用到的技术,
它可以让我们实现一个功能,而且还不用牺牲本来就不多的屏幕空间。
例如,你在一个ListView上长按会弹出一个删除或者编辑的小窗口(ContextMenu)。一般屏幕右上角有三个小点时候当你点击它,屏幕底部会弹出一个OptionsMenu等。
所以在这重点写一下关于Menu的详解。尽量写的详细,以便在以后的工作学习中方便回顾查找。
先让我们看一下Menu接口的继承关系图。
-
首先是分类
一般Menu被分为三类
- OptionsMenu(选项菜单)
- ContextMenu(上下文菜单)
- SubMenu(子菜单)
首先是 OptionsMenu(选项菜单)
- OptionsMenu的各种方法:
- public boolean onCreateOptionsMenu(Menu menu)
用于初始化菜单,其中Menu参数就是即将要显示的Menu实例。(只会在第一次初始化菜单时候调用) - public boolean onPrepareOptionsMenu(Menu menu)
在onCreateOptionsMenu执行后,菜单被显示前调用;如果菜单已经被创建,则在菜单显示前被调用。
同样,返回true则显示该menu,false则不显示。
(可以通过此方法动态的改变菜单的状态,比如加载不同的菜单等)
- public void onOptionsMenuClosed(Menu menu)
每次菜单被关闭时调用(菜单被关闭正常有三种情况:menu按钮再次被点击,back按钮被点击,用户选择了某一个菜单项) - public boolean onOptionsItemSelected(MenuItem item)
菜单项被点击时调用,也就是菜单项的监听方法。
通过这几个方法可以得知,对于Activity,同一时间只能显示和监听一个Menu对象。