概述

菜单(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相关推荐

  1. 一起学Android之Menu

    概述 菜单(Menu)在Android开发中,是一种常见的用户界面组件,通过使用菜单Api可以给用户提供常见的一致的体验.本文主要讲解三种菜单的相关内容. 菜单的分类 选项菜单(OptionsMenu ...

  2. Android数据存储:数据库基础,在Android应用中使用数据库,附加Menu菜单选项的一些说明

    为什么**持久性数据很重要: 在计分器那个应用中,是将球队得分存储在变量里,当我们旋转应用时Activity被销毁,得分记录也没有了.将设备旋转为新的方向时,Activity被重现创建,得分又变成默认 ...

  3. Android菜单详解——理解android中的Menu

    前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...

  4. android menu 小红点,Android自定义ActionProvider ToolBar实现Menu小红点

    今天的几个目标: 1. 自定义ActionProvider 2. Toolbar ActionBar自定义Menu 3. Toolbar ActionBar 右侧Menu添加角标(Toolbar Ac ...

  5. android导入项目出现style错误,menu错误

    android导入项目出现style错误,menu错误 style //查看 res/values/styles.xml 下的报错点.<style name="AppBaseTheme ...

  6. android menu xml 属性,Android中Menu类型及常见属性说明

    Android系统里面有3种类型的菜单:options menu,context menu,sub menu. 一.options menu 按Menu键就会显示,用于当前的Activity. 它包括 ...

  7. Pro Android学习笔记(三三):Menu(4):Alternative菜单

    什么是Alternative menu(替代菜单) 举个例子,Activity显示一个文本文件.如果用户想对文本文件进行编辑,Activity不提供编辑能力,但可由其他activity或者其他应用提供 ...

  8. android menu item 显示,Android 如何通过menu id来得到menu item 控件 .

    Android 如何通过menu id来得到menu item 控件 . (2012-07-21 06:43:31) 标签: android 如何 杂谈 Android 如何通过menu id来得到m ...

  9. Menu菜单资源Android

    Menu菜单资源Android 1.新建Menu\app\src\main\res\menu 目录 1.1新建activity_main.xml <?xml version="1.0& ...

最新文章

  1. 2022-2028年中国煤制甲醇产业投资分析及前景预测报告
  2. Matlab与线性代数 -- 稀疏矩阵的图形显示
  3. 这份宝典火了,小哥学后加薪30W+
  4. C++对象内存布局--⑤GCC编译器--单个虚拟继承
  5. php mysql 白屏_apache+php+mysql的白屏问题
  6. 我的Linux系统入坑之路!!!!
  7. OCM备考 一、Server config 之配置shared server
  8. PhpStudy 升级 MySQL 版本到5.7
  9. 冲突域 广播域简单解释
  10. 【分享】Lucene.Net的中文分词组件AdvancedChineseAnalyzer
  11. 【报告分享】2020年抖音kol生态研究报告.pdf(附下载链接)
  12. py导入包异常跳出_马克的Python学习笔记#模块和包
  13. 浏览器不兼容原因及解决办法
  14. Cipher文件加密
  15. rpg存档修改网站_Switch上国宝级欧美版RPG游戏推荐
  16. 服务器信息批量收集,如何批量导入或导出服务器信息
  17. matlab 反步法,反步法的Matlab仿真学习程序
  18. mysql查询所有图书信息_PHP+MySQL使用mysql_num_rows实现模糊查询图书信息功能
  19. 我们一起学爪哇(2)
  20. 使用PowerBuilder 9编绎DLL类型,有点问题.处理过程记录如下.”Error opening file ‘c:\windows\system32\cgen\en32t.h’”

热门文章

  1. sql_action
  2. 重读The C programming Lanuage 笔记二:运算符优先级
  3. (Builder)创建者模式
  4. python的标准库学习之__buitin__
  5. Script:列出没有主键或唯一索引的表
  6. 去掉iframe的水平滚动条而保留垂直滚动条
  7. Duplicate interface definition for class解决方法
  8. react 中使用import()实现按需加载报错 解决方法 --‘import’ and ‘export’ may only appear at the top level
  9. pptx打不开,未安装该文件类型的文本转换程序~[解决方案]
  10. ubuntu下创建定时任务的两种方式及常见问题解决方案