Android应用中菜单(Menu)的位置显示问题
来源:互联网 发布:阿里云服务器维护教程 编辑:程序博客网 时间:2024/05/22 05:11
问题的产生:
在bugzilla中发现测试人员提出的一个bug,经过仔细阅读测试人员给出的信息,发现是关于应用中MENU按键弹出菜单和点击More弹出菜单的位置显示不一致的问题,具体问题如下:
1、按下手机上的MENU按键弹出的菜单显示如下:
2、点击右上角的More按钮显示的菜单如下:
初步分析:
从表面来看,同样的功能菜单,同样的选项,不同是触发方式和显示的位置。
单单从表面上来看已经无法知晓此差别的原因了,下面就去分析和研究以下android的browser源码。
分析结果:
通过分析android的browser源码发现两种菜单虽然显示的菜单项一样,状态一样,但是却用的不是同一种菜单组件,显示在右上角的菜单是PopupMenu,显示在底部居中的菜单时OptionsMenu,通过进一步的分析查找发现,android的基本菜单有以下三种:
有了以上的背景知识之后,基本上可以知道为什么两个菜单显示的位置不一致,但是为了进一步验证,所以写了一个测试应用,显示效果如下:
1、在android 4.2系统上默认的空白activity,按下手机上的Menu按键,以及右上角的More按钮,菜单都显示如下:
2、通过AndroidManifest配置空白的activity不显示action bar,按下手机上的Menu键,菜单显示如下:
在bugzilla中发现测试人员提出的一个bug,经过仔细阅读测试人员给出的信息,发现是关于应用中MENU按键弹出菜单和点击More弹出菜单的位置显示不一致的问题,具体问题如下:
1、按下手机上的MENU按键弹出的菜单显示如下:
2、点击右上角的More按钮显示的菜单如下:
初步分析:
从表面来看,同样的功能菜单,同样的选项,不同是触发方式和显示的位置。
单单从表面上来看已经无法知晓此差别的原因了,下面就去分析和研究以下android的browser源码。
分析结果:
通过分析android的browser源码发现两种菜单虽然显示的菜单项一样,状态一样,但是却用的不是同一种菜单组件,显示在右上角的菜单是PopupMenu,显示在底部居中的菜单时OptionsMenu,通过进一步的分析查找发现,android的基本菜单有以下三种:
1、选项菜单和动作条(Options menu and action bar):
一个Activity中主要的菜单项的集合。在2.3或更低的版本中,用户可以按菜单键来调出选项菜单;在3.0或更高的版本上,可能没有菜单键,所以菜单项是通过动作条来呈现的。2、环境菜单和环境化的动作条(Context menu and contextual action mode);
当用户在某个元素上长按时的菜单。在3.0或更高本版上,应使用环境化的动作条。
3、弹出菜单(Popup menu): 弹出菜单会在调用它的View上显示一个垂直排列的列表。很适合作为动作条的溢出动作。
有了以上的背景知识之后,基本上可以知道为什么两个菜单显示的位置不一致,但是为了进一步验证,所以写了一个测试应用,显示效果如下:
1、在android 4.2系统上默认的空白activity,按下手机上的Menu按键,以及右上角的More按钮,菜单都显示如下:
2、通过AndroidManifest配置空白的activity不显示action bar,按下手机上的Menu键,菜单显示如下:
另:在AndroidManifest里的Activity加上属性
后,普通ActionBar将不再显示在标题栏部分,而是显示在屏幕底部,具体效果如下:结论:
android自带的browser的两种不同位置和触发方式的菜单显示是应用的正常行为,是应用采用了两种不同类型的菜单,因为browser为了兼容性,没有使用新特性action bar,而是自己实现了一个类似action bar的nvscreen控件,控件中使用了PopupMenu,使其定位在More按钮周围,同时还使用了OptionsMenu,因为没有Action bar,所以按下Menu键,会显示菜单在屏幕的底部居中。 0 0
- Android应用中菜单(Menu)的位置显示问题
- Android应用中菜单(Menu)的位置显示问题
- android menu 的显示问题
- android中menu菜单的简单使用
- Android中Menu 菜单的使用
- Android中Menu菜单的使用
- ExtJS中Ext.menu.Menu菜单应用
- android 的Menu菜单
- ActionBar上的overflow menu显示位置的问题
- Android 在Fragment或activity中显示与隐藏Menu的菜单
- Context-Menu.Android库的使用(修改显示位置)
- Android,安卓,toolbar,menu显示位置,及样式调整,及使用PopupWindow 实现menu下拉菜单gong
- Android之Menu菜单 onCreateOptionsMenu使用Menu按键显示不了问题
- Android学习-menu无法显示的问题
- android开发action bar中menu菜单action overflow问题
- Android 中添加menu菜单
- Android中menu的显示与隐藏
- android,安卓,toolbar,menu显示位置
- Mac OSX Docker下搭建Android+Jenkins+Gitlab
- 异常
- Activity(1)
- 大数据_Zookeeper_ZooKeeper伪分布式集群安装及使用
- redis(二)
- Android应用中菜单(Menu)的位置显示问题
- Activity之间的数据传输的4种方法
- GitHub翻译之 ‘Contributing to Open Source’
- ListView恢复位置
- Spring MVC 教程,快速入门,深入分析
- SpringMVC 接收页面Post提交的json字符串并解析
- A. Beru-taxi
- MC9S08AW60学习笔记--Debug
- gson 解析json数据