当前位置:首页 » 安卓系统 » androidoptionmenu

androidoptionmenu

发布时间: 2022-05-23 07:47:56

‘壹’ contextmenu和optionmenu的区别

你好,区别如下:
ContextMenu是android的context menu上下文菜单,选择某项VIEW后长按menu键,就会显示出来。
比如Edit Text就可以通过长按来弹出拥有“cut”,"","paste"等项的ContextMenu。
实现ContextMenu,一般要用到以下三个方法:
(1)registerForContextMenu(getExpandableListView());

(2)onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo);
(3)onContextItemSelected(MenuItem item);

>>ContextMenu和OptionsMenu相比主要有以下区别:
1,ContextMenu必须通过Activity的registerForContextMenu(View)来进行注册,而OptionsMenu不用。
2,ContextMenu不支持icon,而OptionsMenu支持。
3,ContextMenu可以有头,可以通过setHeaderIcon,setHeaderTitle,setHeaderView来设置头,否则就没有头。
4,弹出的方式不一样。
5,Options Menu的拥有者是Activity,而上下文菜单的拥有者是Activity中的View。
每个Activity有且只有一个Options Menu,它为整个Activity服务。
而一个Activity往往有多个View,并不是每个View都有上下文菜单,这就需要我们调用registerForContextMenu(View view)来指定。

注意事项:ContextMenu的任何项在被选中后,整个ContextMenu会自动被系统关闭掉,即使多选项也是这样。这样的话,多选项的行为就有些怪异。查看Android的源码后,发现这是个Android的bug,应该是google没考虑多选项的情况。

尽管上下文菜单的拥有者是View,生成上下文菜单却是通过Activity中的onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo)方法,该方法很像生成Options Menu的onCreateOptionsMenu(Menu menu)方法。
两者的不同在于,onCreateOptionsMenu只在用户第一次按“Menu”键时被调用,
而onCreateContextMenu会在用户每一次长按View时被调用,而且View必须已经注册了上下文菜单。
另一个值得注意的就是上图中的ContextMenuInfo,该类的对象被传入onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo)方法,那么它有什么用呢?有时候,视图元素需要向上下文菜单传递一些信息,比如该View对应DB记录的ID等,这就要使用ContextMenuInfo。需要传递额外信息的View需要重写getContextMenuInfo()方法,返回一个带有数据的ContextMenuInfo实现类对象。
介绍了这么多,下面给出一个demo演示如何创建和响应上下文菜单:
1.在activity的onCreate(...)方法中为一个view注册上下文菜单
2.在onCreateContextMenuInfo(...)中生成上下文菜单。
3.在onContextItemSelected(...)中响应上下文菜单项。

‘贰’ android,..onCreateOptionsMenu....选项菜单,屏幕右上角没有菜单的图标啊该点击哪儿

点击屏幕的 menu键,就出来了。
貌似是安卓4.0以后,就这样了。

‘叁’ 为什么我在Android中创建了 OptionMenu菜单为什么不显示出来这是什么原因

在Android中,菜单被分为如下三种,选项菜单(OptionsMenu)、上下文菜单(ContextMenu)和子菜单(SubMenu),如果增加了Menu但是没有显示出来,建议你检查一下代码,是否重写了OptionMenu的相关API


关于Menu的几个重点:

  1. OptionMenu的常用API

public boolean onCreateOptionsMenu(Menu menu):使用此方法调用OptionsMenu。

public boolean onOptionsItemSelected(MenuItem item):选中菜单项后发生的动作。

public void onOptionsMenuClosed(Menu menu):菜单关闭后发生的动作。

public boolean onPrepareOptionsMenu(Menu menu):选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。

public boolean onMenuOpened(int featureId, Menu menu):单打开后发生的动作。


2.默认样式

默认样式是在屏幕底部弹出一个菜单,这个菜单我们就叫他选项菜单OptionsMenu,一般情况下,选项菜单最多显示2排每排3个菜单项,这些菜单项有文字有图标,也被称作Icon Menus,如果多于6项,从第六项开始会被隐藏,在第六项会出现一个More里,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded Menus。下面介绍。


3.为菜单项注册事件

使用onOptionsItemSelected(MenuItem item)方法为菜单项注册事件,即重写Activity的

public boolean onOptionsItemSelected(MenuItem item) {}

当菜单点击的时候会回调这个方法

‘肆’ 关于Option Menu的显示位置,该怎么处理

关于Option Menu的显示位置
请问一下如何设置Option Menu的显示位置(不知为何我按照例子设置,然后显示的位置是右上角,而且图片没有显示)

------解决方法--------------------
那你的Android版本肯定是API 3.0以上了,默认是在上面。
你可以在Manifest中的Application标签下加上: android:theme="@android:style/Theme",就回归到以前的版本了。
显示在下方,图片也出来了

‘伍’ android中OptionsMenu(包括点击more展开的部分)字体颜色之类的如何设置

你可以把你想要的字体及颜色做成图片,然后添加成它icon 的背景图,这样也可以实现改变字体颜色的效果! 这样可以实现吧,因为没有直接修改的方法吧!如果找到的话,希望你分享下!

‘陆’ 初学安卓开发,java语言,请问下面这个方法 onCreateOptionsMenu是什么意思

Android一共有三种形式的菜单:
1.选项菜单(optinosMenu)
2.上下文菜单(ContextMenu)

3.子菜单(subMenu)
其中最常用的就是选项菜单(optionsMenu), 该菜单在点击 menu 按键 后会在对应的Activity底部显示出来。如果你用过android手机的话,这个感受应该是很明显的

‘柒’ android optionmenu 三个点怎么出来

你要在menu.xml中的item里面设置showAsAction="ifRoom"
4.2上版本的optionsMenu是放到actionbar上面了,必须要在xml文件中设置showAsAction="always"或showAsAction="ifRoom"才能在actionbar上显示。

‘捌’ Android怎么讲OptionMenu的Item同时显示title和icon,但是menu又不显示在Action Bar上有代码更好~~

这个貌似是不行的,如果找到了方法,再来完善吧。

‘玖’ android继承activity为什么要重写onCreateOptionsMenu,以前的版本是不用重写的

可以不用管,是adt-20开始有的。这个就是在该界面增加了menu 功能,你在该界面按下menu按键,有弹出menu选项框。

‘拾’ android开发中怎么在一个应用程序中设置两个不同的menu点击事件

public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
menu.clear();
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.option_menu, menu);
if (islogin) {
menu.findItem(R.id.add).setEnabled(false);
menu.findItem(R.id.delete).setEnabled(false);
} else {
menu.findItem(R.id.login).setEnabled(false);
menu.findItem(R.id.logout).setEnabled(false);
}
return true;}
大概是这个样子,试试吧!

热点内容
linux编程java 发布:2025-08-22 07:57:40 浏览:309
steam删文件夹 发布:2025-08-22 07:57:38 浏览:51
bytec语言 发布:2025-08-22 07:37:34 浏览:386
苹果手机怎么上传视频到qq空间 发布:2025-08-22 07:10:03 浏览:636
淘宝androidsdk 发布:2025-08-22 06:52:04 浏览:938
编程挣钱吗 发布:2025-08-22 06:31:21 浏览:1001
敬请存储 发布:2025-08-22 06:25:42 浏览:610
linuxphp7配置 发布:2025-08-22 06:17:01 浏览:415
shellftp脚本 发布:2025-08-22 06:11:57 浏览:797
sql数据库打开 发布:2025-08-22 05:58:36 浏览:889