android之menu,一起学Android之Menu
概述
菜单(menu)在android开发中,是一种常见的用户界面组件,通过使用菜单api可以给用户提供常见的一致的体验。本文主要讲解三种菜单的相关内容。
菜单的分类
选项菜单(optionsmenu):选项菜单是活动菜单项的主要集合,主要应用于app上有全局影响的功能,如:搜索,设置等。
上下文菜单(contextmenu):上下文菜单是一个浮动菜单,当用户在元素上进行长时间单击时会出现。它提供了影响选定内容或上下文框架的操作。
弹出菜单(popupmenu):弹出菜单主要应用于列表中的列表项,弹出菜单锚定在调用菜单的视图控件上。
涉及知识点
registerforcontextmenu 注册上下文菜单方法。
getmenuinflater() 获取菜单填充对象,通过资源文件实例化菜单对象。
popupmenu.getmenu 获取菜单对象
选项菜单(optionsmenu)
通过重写activity中的oncreateoptionsmenu 方法,来设置选项菜单;通过重写onoptionsitemselected方法来处理选项菜单的事件功能。
如下图所示:选项菜单位于app的左上角的三个白色圆点显示,当点击时弹出菜单内容。
关键代码如下:
1 /**
2 * oncreateoptionsmenu重写方法用于创建选项菜单
3 * 可以通过资源文件进行创建,也可以通过代码进行创建。
4 * 返回值,如果是true则显示菜单,如果是false则不显示菜单
5 */
6 @override
7 public boolean oncreateoptionsmenu(menu menu) {
8 menuinflater inflater = getmenuinflater();
9 inflater.inflate(r.menu.options_menu,menu);
10 return true;
11 }
12
13 /**
14 * 选项菜单,选中事件处理方法
15 */
16 @override
17 public boolean onoptionsitemselected(menuitem item) {
18 switch (item.getitemid()){
19 case r.id.m_search :
20 toast.maketext(mainactivity.this,"查找",toast.length_short).show();
21 break;
22 case r.id.m_setting :
23 toast.maketext(mainactivity.this,"设置",toast.length_short).show();
24 break;
25 default:
26 break;
27 }
28 return true;
29 }
下文菜单(contextmenu)
通过重写activity中的oncreatecontextmenu方法来设置上下文菜单,通过重写oncontextitemselected方法来处理上下文菜单的事件。
如下图所示,通过长按控件,就可以弹出上下文菜单。
关键代码如下:
1 /**
2 * 上下文菜单,通过资源文件设置上下文菜单
3 */
4 @override
5 public void oncreatecontextmenu(contextmenu menu, view v, contextmenu.contextmenuinfo menuinfo) {
6 getmenuinflater().inflate(r.menu.context_menu,menu);
7 }
8
9 /**
10 * 上下文菜单响应事件
11 * @param item
12 * @return
13 */
14 @override
15 public boolean oncontextitemselected(menuitem item) {
16 switch (item.getitemid()){
17 case r.id.get_width:
18 toast.maketext(mainactivity.this,"宽度="+tvcontent.getwidth(),toast.length_short).show();
19 break;
20 case r.id.get_height:
21 toast.maketext(mainactivity.this,"高度="+tvcontent.getheight(),toast.length_short).show();
22 break;
23 default:
24 break;
25 }
26 return true;
27 }
上下文菜单需要通过注册到指定的控件上才可以
1 //为控件注册上下文菜单,一般用于gridview和listview中
2 registerforcontextmenu(tvcontent);
弹出菜单(popupmenu)
通过popupmenu popupmenu=new popupmenu(this,v)的方式,声明弹出菜单。其中第二个参数,是菜单锚定的控件,即菜单停靠在哪个控件上。
如下图所示:点击按钮时弹出菜单
关键代码如下,调用show()方法显示菜单:
1 /**
2 *
3 * @param v 控件本身
4 */
5 public void btnfontclick(view v){
6 //第二个参数是anchor表示菜单停靠点
7 popupmenu popupmenu=new popupmenu(this,v);
8 getmenuinflater().inflate(r.menu.popumenu,popupmenu.getmenu());
9 popupmenu.show();
10 //设置监听事件
11 popupmenu.setonmenuitemclicklistener(new popupmenu.onmenuitemclicklistener() {
12 @override
13 public boolean onmenuitemclick(menuitem item) {
14 switch (item.getitemid()){
15 case r.id.m_add:
16 fontsize=fontsize+5;
17 break;
18 case r.id.m_sub:
19 if(fontsize<=10) {
20 toast.maketext(mainactivity.this,"字体大小最小为10",toast.length_short).show();
21 }else{
22 fontsize = fontsize - 5;
23 }
24 break;
25 }
26 tvcontent.settextsize(fontsize);
27 return false;
28 }
29 });
30 }
备注
菜单项的功能应用场景有很多,本文旨在抛砖引玉,共同学习。
android之menu,一起学Android之Menu相关推荐
- 一起学Android之Menu
概述 菜单(Menu)在Android开发中,是一种常见的用户界面组件,通过使用菜单Api可以给用户提供常见的一致的体验.本文主要讲解三种菜单的相关内容. 菜单的分类 选项菜单(OptionsMenu ...
- Android数据存储:数据库基础,在Android应用中使用数据库,附加Menu菜单选项的一些说明
为什么**持久性数据很重要: 在计分器那个应用中,是将球队得分存储在变量里,当我们旋转应用时Activity被销毁,得分记录也没有了.将设备旋转为新的方向时,Activity被重现创建,得分又变成默认 ...
- Android菜单详解——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
- android menu 小红点,Android自定义ActionProvider ToolBar实现Menu小红点
今天的几个目标: 1. 自定义ActionProvider 2. Toolbar ActionBar自定义Menu 3. Toolbar ActionBar 右侧Menu添加角标(Toolbar Ac ...
- android导入项目出现style错误,menu错误
android导入项目出现style错误,menu错误 style //查看 res/values/styles.xml 下的报错点.<style name="AppBaseTheme ...
- android menu xml 属性,Android中Menu类型及常见属性说明
Android系统里面有3种类型的菜单:options menu,context menu,sub menu. 一.options menu 按Menu键就会显示,用于当前的Activity. 它包括 ...
- Pro Android学习笔记(三三):Menu(4):Alternative菜单
什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供 ...
- android menu item 显示,Android 如何通过menu id来得到menu item 控件 .
Android 如何通过menu id来得到menu item 控件 . (2012-07-21 06:43:31) 标签: android 如何 杂谈 Android 如何通过menu id来得到m ...
- Menu菜单资源Android
Menu菜单资源Android 1.新建Menu\app\src\main\res\menu 目录 1.1新建activity_main.xml <?xml version="1.0& ...
最新文章
- 2022-2028年中国煤制甲醇产业投资分析及前景预测报告
- Matlab与线性代数 -- 稀疏矩阵的图形显示
- 这份宝典火了,小哥学后加薪30W+
- C++对象内存布局--⑤GCC编译器--单个虚拟继承
- php mysql 白屏_apache+php+mysql的白屏问题
- 我的Linux系统入坑之路!!!!
- OCM备考 一、Server config 之配置shared server
- PhpStudy 升级 MySQL 版本到5.7
- 冲突域 广播域简单解释
- 【分享】Lucene.Net的中文分词组件AdvancedChineseAnalyzer
- 【报告分享】2020年抖音kol生态研究报告.pdf(附下载链接)
- py导入包异常跳出_马克的Python学习笔记#模块和包
- 浏览器不兼容原因及解决办法
- Cipher文件加密
- rpg存档修改网站_Switch上国宝级欧美版RPG游戏推荐
- 服务器信息批量收集,如何批量导入或导出服务器信息
- matlab 反步法,反步法的Matlab仿真学习程序
- mysql查询所有图书信息_PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
- 我们一起学爪哇(2)
- 使用PowerBuilder 9编绎DLL类型,有点问题.处理过程记录如下.”Error opening file ‘c:\windows\system32\cgen\en32t.h’”
热门文章
- sql_action
- 重读The C programming Lanuage 笔记二:运算符优先级
- (Builder)创建者模式
- python的标准库学习之__buitin__
- Script:列出没有主键或唯一索引的表
- 去掉iframe的水平滚动条而保留垂直滚动条
- Duplicate interface definition for class解决方法
- react 中使用import()实现按需加载报错 解决方法 --‘import’ and ‘export’ may only appear at the top level
- pptx打不开,未安装该文件类型的文本转换程序~[解决方案]
- ubuntu下创建定时任务的两种方式及常见问题解决方案