Android应用中菜单(Menu)的位置显示问题
来源:互联网 发布:perl语言编程 pdf 编辑:程序博客网 时间:2024/06/04 22:47
问题的产生:
在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
更多关于Android的Menu信息,可以参考以下网站:Android开发者官网
在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
<activity android:theme="@android:style/Theme.Holo.NoActionBar">,按下手机上的Menu键,菜单显示如下:
另:在AndroidManifest里的Activity加上属性
android:uiOptions="splitActionBarWhenNarrow"后,普通ActionBar将不再显示在标题栏部分,而是显示在屏幕底部,具体效果如下:
结论:
android自带的browser的两种不同位置和触发方式的菜单显示是应用的正常行为,是应用采用了两种不同类型的菜单,因为browser为了兼容性,没有使用新特性action bar,而是自己实现了一个类似action bar的nvscreen控件,控件中使用了PopupMenu,使其定位在More按钮周围,同时还使用了OptionsMenu,因为没有Action bar,所以按下Menu键,会显示菜单在屏幕的底部居中。更多关于Android的Menu信息,可以参考以下网站:Android开发者官网
10 2
- 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显示位置
- BackTrack5 R3 Gnome+KED 安全工具菜单的汉化
- http://www.hwdio.com/
- windows2008 r2,安装扫描仪驱动
- paip.mysql 全文索引查询空白解决
- TCP的流量控制和拥塞控制
- Android应用中菜单(Menu)的位置显示问题
- iOS-网络图片下载
- Linux下查看端口号
- extjs panel中动态增加items
- 记录
- 求字符串的长度(数组名作参考)
- 哈希表学习
- 常用的cron表达式
- 对Squid使用的一些总结