android-----关于Menu
2015-10-14 14:24
477 查看
Android支持的菜单有:
1、选项菜单(OptionsMenu)
2、上下文菜单(ContextMenu)
3、子菜单(SubMenu)
选项菜单(OptionsMenu)的用法
当一个选项菜单中还有菜单时,就要用到子菜单(SubMenu)
若要在菜单项中显示图片,可以用setIcon()方法。需要注意的是:我用的是android4.2.1的版本,若单单调用setIcon() 方法还是不能再菜单项中显示图片的,要显示图片需要在
清单文件中的<activity>加上:
对于Android 4.0以上,系统缺省的UI风格有所变化,如果我们仍希望采用原有的显示方式,可以通过为Activity设置theme,指定风格,经过测试,Theme以及Theme.Light均可以使用旧的菜单风格,而Theme.Holo不行。
没有加上面的主题,运行结果如下:
![](https://img-blog.csdn.net/20151012141843714?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
点击OptionsMenu3进入如下:
![](https://img-blog.csdn.net/20151012142205384?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
再点击subInSub进入
![](https://img-blog.csdn.net/20151012142257492?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
若加上上面的主题后,运行效果如下:
![](https://img-blog.csdn.net/20151012142401066?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20151012142443976?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20151012142525069?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
通过比较发现,加上了上面的主题后,不仅菜单项中的图片显示了,而且若菜单项多于6个,剩下的菜单项则可以通过更多菜单项显示。并且没加主题时是以列表的形式全部显示的,加了主题后是通过表格形式显示的,但是通过更多菜单项显示的菜单并不显示图片。
上下文菜单(ContextMenu)
除了手动添加上下文菜单选项,同样也可以通过xml文件来添加上下文菜单选项,方式如下:
contextmenu_layout.xml文件如下:
长按button,运行效果如下:
![](https://img-blog.csdn.net/20151012143736099?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
通过运行效果可以看出,“上下文菜单1”中并没有显示图片。原来:
在Android支持的菜单中,只有选项菜单的菜单项可以显示图像,上下文菜单和子菜单的菜单头可以显示图像,但是菜单项不能显示图像。
相应菜单项单击事件的方法:
1、onMenuItemClick
2、onOptionsItemSelected
3、onMenuItemSelected
菜单项与Activity的关联
在菜单项中除了可以用java代码显示的打开一个activity外,还可以将activity于菜单项进行关联。代码如下:
1、选项菜单(OptionsMenu)
2、上下文菜单(ContextMenu)
3、子菜单(SubMenu)
选项菜单(OptionsMenu)的用法
当一个选项菜单中还有菜单时,就要用到子菜单(SubMenu)
@Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. // getMenuInflater().inflate(R.menu.main, menu); super.onCreateOptionsMenu(menu); menu.add(0, Menu.FIRST, 1, "现在显示按钮1").setIcon(R.drawable.ic_launcher); menu.add(0, Menu.FIRST+1, 2, "现在显示按钮2").setIcon(R.drawable.ic_launcher); //menu.add(0, Menu.FIRST+2, 3, "OptionsMenu3").setIcon(R.drawable.ic_launcher); menu.add(0, Menu.FIRST+3, 4, "OptionsMenu4").setIcon(R.drawable.ic_launcher); menu.add(0, Menu.FIRST+4, 5, "OptionsMenu5").setIcon(R.drawable.ic_launcher); menu.add(0, Menu.FIRST+5, 6, "OptionsMenu6").setIcon(R.drawable.ic_launcher); menu.add(0, Menu.FIRST+6, 7, "OptionsMenu7").setIcon(R.drawable.ic_launcher); menu.add(0, Menu.FIRST+7, 8, "OptionsMenu8").setIcon(R.drawable.ic_launcher); //向OptionsMenu3中添加子菜单 SubMenu subMenu = menu.addSubMenu(1, Menu.FIRST+2 , 3, "OptionsMenu3"); //子菜单是菜单的子类,所以增加菜单项方式一样 subMenu.add(1, 1, 3,"Sub.1"); subMenu.add(1, 2, 1,"Sub.2").setIcon(R.drawable.ic_launcher); subMenu.add(1, 3, 2,"Sub.3"); //默认第一个显示 SubMenu subsub = subMenu.addSubMenu("subInSub"); subsub.add("sub.sub.1"); subsub.add("sub.sub.2"); /** * true 显示 * false 不显示 */ return true; }
若要在菜单项中显示图片,可以用setIcon()方法。需要注意的是:我用的是android4.2.1的版本,若单单调用setIcon() 方法还是不能再菜单项中显示图片的,要显示图片需要在
清单文件中的<activity>加上:
android:theme="@android:style/Theme.Light"经过百度,原因解释如下:
对于Android 4.0以上,系统缺省的UI风格有所变化,如果我们仍希望采用原有的显示方式,可以通过为Activity设置theme,指定风格,经过测试,Theme以及Theme.Light均可以使用旧的菜单风格,而Theme.Holo不行。
没有加上面的主题,运行结果如下:
点击OptionsMenu3进入如下:
再点击subInSub进入
若加上上面的主题后,运行效果如下:
通过比较发现,加上了上面的主题后,不仅菜单项中的图片显示了,而且若菜单项多于6个,剩下的菜单项则可以通过更多菜单项显示。并且没加主题时是以列表的形式全部显示的,加了主题后是通过表格形式显示的,但是通过更多菜单项显示的菜单并不显示图片。
上下文菜单(ContextMenu)
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); menu.add(1, 1, 1, "上下文菜单1").setIcon(R.drawable.ic_launcher); menu.add(1, 2, 3, "上下文菜单2"); menu.add(1, 3, 2, "上下文菜单3"); }
除了手动添加上下文菜单选项,同样也可以通过xml文件来添加上下文菜单选项,方式如下:
MenuInflater inflater=getMenuInflater(); inflater.inflate(R.menu.contextmenu_layout, menu);
contextmenu_layout.xml文件如下:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/contextmenu1" android:title="上下文菜单1"/> <item android:id="@+id/contextmenu2" android:title="上下文菜单2"/> <item android:id="@+id/contextmenu3" android:title="上下文菜单3"/> </menu>上下文菜单通常与可视组件绑定一起使用,绑定的方法registerForContextMenu(),代码如下:
button=(Button) findViewById(R.id.button3); registerForContextMenu(button);
长按button,运行效果如下:
通过运行效果可以看出,“上下文菜单1”中并没有显示图片。原来:
在Android支持的菜单中,只有选项菜单的菜单项可以显示图像,上下文菜单和子菜单的菜单头可以显示图像,但是菜单项不能显示图像。
相应菜单项单击事件的方法:
1、onMenuItemClick
2、onOptionsItemSelected
3、onMenuItemSelected
菜单项与Activity的关联
在菜单项中除了可以用java代码显示的打开一个activity外,还可以将activity于菜单项进行关联。代码如下:
@Override public boolean onCreateOptionsMenu(Menu menu) { MenuItem addMenuItem=menu.add(2,1,1,"菜单项"); addMenuItem.setIntent(new Intent(this,OtherActivity.class)); return true; }
相关文章推荐
- drupal中hook_menu()使用
- Android菜单menu控件大全
- C#实现Menu和ContextMenu自定义风格及contextMenu自定义
- 开发 Internet Explorer 右键功能表(ContextMenu)
- android编程之menu按键功能实现方法
- Android学习笔记――Menu介绍(一)
- Android学习笔记――Menu介绍(三)
- Android学习笔记――Menu介绍(二)
- Android提高之自定义Menu(TabMenu)实现方法
- Android实现扩展Menu的方法
- Android中捕捉menu按键点击事件的方法
- Android动态添加menu菜单的简单方法
- Android中ContextMenu用法实例
- Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例
- ListView中单击其 3ff8 中一项创建ContextMenu,如何获取该localBookList...
- 如何找回Notepad++的右键菜单
- Android 自定义系统菜单的背景源码
- menu基本用法
- 2015Android移动开发应用主流菜单模式
- shell-menu