menu

来源:互联网 发布:淘宝公司的管理团队 编辑:程序博客网 时间:2024/06/11 09:43

Android系统里面有3种类型的菜单:options menucontext menusub menu

一、            options menu详解

options menu在屏幕底部最多只能显示6个菜单项。

Activity里面,一般通以下函数来使用options menu

     Activity::onCreateOptionsMenu (Menumenu)   options menu个函数      只会在menu第一次时调用。

     Activity::onOptionsItemSelected (MenuItemitem) 中的菜单项

 

例:

第一步:

       @Override

       public boolean onCreateOptionsMenu(Menu menu)

       {

               menu.add(0, ITEM1, 0, "menu1");

               menu.add(0, ITEM2, 1, "menu2");

              return super.onCreateOptionsMenu(menu);

    }

 

通过onCreateOptionsMenu方法,增加了两个按钮,按钮名字分别为menu1menu2

主要通过方法Menu.add(intgroupId, int itemId, int order, CharSequence title)

groupId:分组的id,如果不用分组就用0

itemIdmenu当中每一项的id。这个id是唯一的。

order:排序的信息,根据这个字段的大小,menu对其中的项进行排序显示。order                 的显示在前边,大的显示在后边。

titlemenu项的显示信息。

 

第二步:

       @Override

       public boolean onOptionsItemSelected(MenuItem item)

       {

              switch (item.getItemId())

              {

               case ITEM1:

               Log.i("onOptionsItemSelected", "menu1");

               break;

               case ITEM2:

               Log.i("onOptionsItemSelected", "menu2");

               break;

              }

              return super.onOptionsItemSelected(item);

    }

这个方法是实现menu响应单击事件,是一个回调方法。即这个方法只有在事件触发后才会被Android系统自动调用执行。而这个事件就是单击菜单里的某一项(MenuItem),看到这个方法传进来的参数是MenuItem,也就是menu当中的某一项。

其中通过item.getItemId()可以获得menu的唯一id

 

 

二、contextmenu详解

    要在相应的view上按几秒后才显示的,用于view,跟某个具体的view绑定在一起。

Activity里面,一般通以下函数来使用context menu

        registerForContextMenu(Viewview)

        为某个view注册context menu,一般在Activity::onCreate里面调用。

 

        onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo)

        创建context menu,和options menu不同,context meun每次显示时都会调用这 个函数。

 

        public boolean onContextItemSelected(MenuItemitem)

        处理选中的菜单项。

例:

第一步:

onCreate方法中为某个view注册

       @Override

       public void onCreate(Bundle savedInstanceState)

       {

              super.onCreate(savedInstanceState);

              setContentView(R.layout.main);

              txt = (TextView)findViewById(R.id.txt);

              registerForContextMenu(txt);

       }

 

第二步:

生成menu

       @Override

       public void onCreateContextMenu(ContextMenu menu, View v,

              ContextMenuInfo menuInfo)

       {

              menu.add(0, ITEM1, 0, "EDIT");

              menu.add(0, ITEM2, 1, "DELETE");

              super.onCreateContextMenu(menu, v, menuInfo);

       }

这个方法同options menu中的onCreateOptionsMenu类似。不予详解。

 

第三步:

处理选中的菜单项

       @Override

       public boolean onContextItemSelected(MenuItem item)

       {

              switch (item.getItemId())

              {

              case ITEM1:

                     Log.i("onOptionsItemSelected", "EDIT");

                     break;

              case ITEM2:

                     Log.i("onOptionsItemSelected", "DELETE");

                     break;

              }

              return super.onContextItemSelected(item);

       }

这个方法同options menu中的onCreateOptionsMenu类似。不予详解。

 

三、 sub menu详解

onCreateOptionsMenu内代码改成如下代码,即可实现submenu

       @Override

       public boolean onCreateOptionsMenu(Menu menu)

       {

              SubMenu sub1 = menu.addSubMenu(0, ITEM1, 0, "sub1");

              SubMenu sub2 = menu.addSubMenu(0, ITEM2, 1, "sub2");

              sub1.add(0, ITEM3, 0, "sub1_1");

              sub1.add(0, ITEM4, 1, "sub1_2");

              sub2.add(0, ITEM5, 2, "sub2_1");

              sub2.add(0, ITEM6, 3, "sub2_2");

 

              return super.onCreateOptionsMenu(menu);

       }

这里主要通过menu.addSubMenu来增加子菜单,其他的和optionsmenu一样。

addSubMenuadd的方法类似,这里不做详细讲解。

原创粉丝点击