android提供了三种菜单类型,分别为optionsmenu,context menu,sub menu。options menu就是通过按home键来显示,context menu需要在view上按上2s后显示。这两种menu都有可以加入子菜单,子菜单不能种不能嵌套子菜单。

options menu最多只能在屏幕最下面显示6个菜单选项,成为iconmenu,icon menu不能有checkable选项。多余6的会以more icon menu来调出,成为expanded menu。options menu通过activity的onCreateOptionsMenu来生成,这个函数只会在menu第一次生成时调用。任何想改变options menu的想法只能在onPrepareOptionsMenu来实现,这个函数会在menu显示前调用。onOptionsItemSelected 处理选中的菜单项。

context menu是跟某个具体的view绑定在一起,在activity种用registerForContextMenu来为某个view注册contextmenu。context menu在显示前都会调用onCreateContextMenu来生成menu。onContextItemSelected选中的菜单项。

android还提供了对菜单项进行分组的功能,可以把相似功能的菜单项分成同一个组,这样就可以通过调用setGroupCheckable,setGroupEnabled,setGroupVisible来设置菜单属性,而无须单独设置。

一、option Menu
在此介绍最简单的菜单应用代码如下:

public class Menu extends Activity{       private static final int SAVE=1;    private static final int SAVE_AS=SAVE+1;    private static final int DELETE=SAVE+2;          public void onCreate(Bundle savedInstanceState) {       super.onCreate(savedInstanceState);       setContentView(R.layout.main);    }     public boolean onCreateOptionsMenu(Menu menu) {       MenuInflater inflater = this.getMenuInflater();       inflater.inflate(R.menu.options_menu, menu);             menu.add(1,SAVE,1,"保存");       menu.add(1,SAVE_AS,2,"另存为");       menu.add(1,DELETE,3,"删除");             menu.findItem(SAVE).setIcon(R.drawable.ic_launcher);             return true;    }       int i=1;        @Override    public boolean onPrepareOptionsMenu(Menu menu) {       MenuItem item = menu.findItem(SAVE_AS);       item.setTitle(item.getTitle()+""+1);       i++;       return super.onPrepareOptionsMenu(menu);    }     public boolean onOptionsItemSelected(MenuItem item) {        switch(item.getItemId()){        case R.id.newFile:           Toast.makeText(this, "new file", Toast.LENGTH_LONG).show();           break;        case R.id.exit:           this.finish();           break;     }     return super.onOptionsItemSelected(item);     } }


对应的main.xml文件为:

<?xml version="1.0"encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">     <item        android:id="@+id/newFile"        android:icon="@drawable/ic_launcher"        android:title="@string/newFile_title"/>     <item        android:id="@+id/exit"        android:icon="@drawable/ic_launcher"        android:title="@string/exit_title"/> </menu>



运行后,需要点击menu菜单按钮,,即可出现菜单,如图所示:

点击”新建文件”(当然现在还没有实现真整的新建文件),会弹出相应的相应



二、sub Menu
将onCreateOptionsMenu内代码改成如下代码,即可实现submenu:

public class MenuTestActivity3 extends Activity {         privatestatic final int SUBMENU = 10;         privatestatic final int SUBITEM1 = SUBMENU +1;         privatestatic final int SUBITEM2= SUBMENU +2;         privatestatic final int SUBITEM3= SUBMENU +3;         publicvoid onCreate(Bundle savedInstanceState) {                   super.onCreate(savedInstanceState);                   setContentView(R.layout.main);         }          publicboolean onCreateOptionsMenu(Menu menu) {                   MenuInflaterinflater = this.getMenuInflater();                   inflater.inflate(R.menu.sub,menu);                    SubMenusubMenu = menu.addSubMenu(1,SUBMENU,1,"子菜单");                                     subMenu.add(20,SUBITEM1,1,"1");                   subMenu.add(20,SUBITEM2,2,"2");                   subMenu.add(30,SUBITEM3,3,"3");                                     MenuItemitem = subMenu.getItem(0);                   subMenu.setGroupCheckable(20,true, true);                   item.setChecked(true);                   subMenu.findItem(SUBITEM3).setCheckable(true);                   returntrue;         }}


对应的main.xml文件为:

<?xml version="1.0"encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <item       android:id="@+id/menuitem1"       android:title="menuitem1"/>    <item       android:id="@+id/menuitem2"       android:title="menuitem2">        <menu >            <item               android:id="@+id/menuitem3"               android:title="menuitem3"/>            <item               android:id="@+id/menuitem4"               android:title="menuitem4">           </item>       </menu>   </item> </menu>


运行后可以出现两级菜单:


在点击”子菜单”之后,出现:

更多相关文章

  1. Flutter插件开发之APK自动安装
  2. 20172321 2017-2018-2 《程序设计与数据结构》第11周学习总结
  3. Android中自定义控件和属性
  4. c#开发android时layout.axml没有智能提示
  5. Android(安卓)添加系统服务的方法
  6. 【Android(安卓)NDK】(一)Hello World!
  7. Android(安卓)BroadcastAnyWhere(Google Bug 17356824)漏洞详细
  8. Android(安卓)悬浮窗 (附圆形菜单悬浮窗)
  9. Android(安卓)之使用ContentProvider(内容提供者)共享数据

随机推荐

  1. php一句话木马变形技巧
  2. php array_walk array_map array_filter
  3. 开发提效小技巧分享(一)
  4. 怎么学漫画?学漫画入门步骤
  5. PHP 基于 SW-X 框架,搭建高性能API架构(四)
  6. PHP实现WebSocket实例详解
  7. Android空白处隐藏软键盘方案
  8. 简单的三方登录SDK示例,Android(安卓)Acti
  9. Android程序调试时生成main.out.xml文件
  10. Android(安卓)NDK 知识系列(五)