Menu 基础知识

来源:互联网 发布:xmind中文破解版 mac 编辑:程序博客网 时间:2024/06/03 19:55

1) menu 是 android 的一个重要组件
2) menu 菜单是一款比较通用的用户体验的组件
3) 从 Android 3.0 即 API 11 之后 android 系统没有提供单独的菜单按钮


1) 选项菜单(Options Menu);当用户触发 menu 项时弹出的菜单
2) 上下文菜单(Context Menu):用户长按那个控件时弹出的类似对话框
3) 弹出菜单,当用户点击某个 View 视图时弹出的菜单


使用 xml 文件加载 Menu
Item 的属性:
android:id 唯一标识菜单,
android:title :菜单项的文本
android: orderInCategory:设置同种类菜单项的排列顺序
android:showAsAction=”never|ifroom|always” 表示是否显示
写好以后直接在代码中写 getMenuInflator.inflate()加载进来即可


(1)、选项菜单
当用户单击设备上的菜单按钮(Menu),触发事件弹出的菜单就是选项菜单。选项菜单最多只有六个,超过六个第六个就会自动显示 更多选项 来展示。
创建方法:
1) 覆盖 Activity 的 onCreateOptionsMenu(Menu menu)方法,当我们第一次打开时调用。
2) 调用 Menu 的 add()方法添加菜单项(MenuItem),可以调用 MenuItem 的 setIcon()方法为菜单项设置图标。
3、 当菜单项(MenuItem)被选中时,覆盖 Acitivy 的 onOptionsMenuSelected()方法响应事件。


(2)、上下文菜单
当用户长按 Activity 页面时,弹出的菜单我们称为上下文菜单。我们经常在 Windows 中用鼠标右键单击弹出的菜单就是上下文菜单。
1) 覆盖 Activity 的 onCreateContextMenu()方法,调用 Menu 的 add 方法添加菜单项MenuItem
2) 覆盖 onContextItemSelected()方法,响应菜单单击事件
3) 调用 registerForContextMenu()方法,为视图注册上下文菜单


(3、子菜单
子菜单就是将相同功能的分组进行多级显示的一种菜单,比如,Windows 的“文件”菜单中就有“新建”,“打开”,“关闭”等子菜单。
创建子菜单的方法
1)、覆盖 Activity 的 onCreateOptionsMenu()方法,调用 Menu 的 addSubMenu()方法添加子菜单项
2)、调用 SubMenu 的 add()方法,添加子菜单项
3)、覆盖 onCreateItemSelected()方法,响应菜单单击事件


使用代码的方式加载弹出菜单
1) 在 Android 中使用代码加载菜单使用的是 menu 的 add()方法,。
2) add()方法的参数需要重点掌握
这里写图片描述


弹出式菜单的点击事件
弹出式菜单的点击事件有三种分别是如下代码所示:
第一种对于使用 xml 加载菜单的可以使用以下两种方式来添加点击事件
这里写图片描述
第二种点击事件
这里写图片描述
第三种点击事件对于那些使用代码加载的菜单可以使用以下方式添加点击事件
这里写图片描述
具体使用哪一种点击事件大家个根据你实现的功能来选择


Menu 菜单的嵌套使用规则
1) Item 中可以嵌套 menu,但是不能嵌套 group
2) Menu 中既可以嵌套 group,又可以嵌套 item。
3) Group 中只能嵌套 item,不能嵌套 menu


上下文菜单:上下文菜单是和某一种控件绑定使用的,也就是说每个控件只有注册了上下文菜单,并且长按时弹出的菜单就是上下文菜单,
上下文菜单加载菜单是通过重写 onCreateContextMenu()来完成的,
上下文菜单的 点击事件是通过抽重写 onContextItemSelected()方法来实现的,具体代码如下
这里写图片描述


PopMenu:拿到菜单项是通过创建 popMenu 的对象,再通过菜单加载器将其加载进来的,popMenu 的点击事件是通过 popMenu.setOnMenuItemClickListener()方法实现的。
实现代码如下:
这里写图片描述
写完以后一定要注意show(),否则不能看到

原创粉丝点击