android笔记17- 各种menu

来源:互联网 发布:c语言之父 谭浩强 编辑:程序博客网 时间:2024/06/04 23:23
各种menu:

OptionsMenu:创建菜单;

点击菜单按钮时显示菜单项,点击菜单项时,有点击事件;

创建菜单项:
  第一步:在Activity中重写onCreateOptionsMenu()来创建选项菜单,在中包含了getMenuInflater().inflate(R.menu.main,menu),R.menu.main是res的menu文件夹下的xml文件是放菜单的文件夹;设置菜单项可以通过两种方法: 一:代码动态设置menu.add(groupId,itemId,order,title),
    groupId--1:分组的id;
    itemId--100:菜单项的id;
    order--1:菜单项排序用的;
    title--"菜单1":菜单名称;
类似于ArrayList,可以调用add方法来加载如
menu.add(1,100,1,"菜单一");
menu.add(1,101,1,"菜单二");
menu.add(1,102,1,"菜单三");
add方法返回的是item,可以赋值给item,再调用item的setTitle与setIcon(在API>=11时,是不显示图标的)来设置item;
二:在R.menu.main的xml文件,添加item控件来添加设置菜单项;
  第二步:重写onOptionsItemSelected(MenuItem item)方法设置菜单项的点击事件,再switch(item.getItemId())来设置各个case,方法1的id是add中itemId,方法二的id是xml文件中定义的id的点击事件;
  第三步:创建Activity,关联xml文件,并在manifest中加上activity。在case中,新建intent,调用item的setIntent(intent)实现界面跳转;

setIconEnable(menu, true);来设置高API的图标;


ContextMenu:

547eed1e00012fa705000254.jpg

547eed1f00018b9305000209.jpg

步骤:
  第一步:添加一个ListView,通过ArrayAdapter设置listView,ArrayAdapter构造函数中的resource设为android.R.layout.simple_list_item_1;objects为ArrayList<String>通过add函数来添加;
 第二步:通过调用this的registerForContextMenu(listView)方法来注册上下文菜单;重写onCreateContextMenu(menu,v,menuInfo)方法;通过调用menu的setHeaderTitle方法来设置标题;menu.add(group,itemId,order,title)与选项目录的add相同;重写onContextItemSelected方法来设置点击事件;也可以在Menu文件夹下的XML文件中添加Item,再通过MenuInflater inflater = getMenuInflater(),调用Inflater的inflate(R.menu.main,menu)方法来把xml设置为菜单项但要注意后面点击事件中的id要为现在的id;



subMenu:子菜单,如先按menu键,之后会出现选择菜单,点击后进入子菜单;或是标题栏上的竖着的省略号;
步骤:
 第一步:重写OncreateOptionsMenu方法;调用menu的addSubMenu(子菜单名)方法来创建子菜单,返回值为menu,并创建subMenu对象并赋上返回值,从而获取到subMenu对象;
 第二步:通过subMenu的add方法来添加submenu的item;调用subMenu的setHeaderTitle(),setHeaderIcon()来设置subMenu的样式;
 第三步:重写onOptionsItenSelected(),来设置item的点击事件;首先调用item的getGroupId()方法来确定groupId,之后再调用item的getItemId()方法确定itemid;

可以通过设置activity的样式来改变子菜单出现的方式:如按住menu键来出现,或者是标题栏上的竖着的省略号;

通过xml的方式来添加subMenu子菜单:
  第一步:在menu.xml文件中item中添加menu的控件,这个menu对应的是子菜单;再在子菜单中添加菜单项;
  第二步:重写OncreateOptionsMenu方法,通过MenuInflater inflater=getMenuInflater();调用inflater的inflate()来加载menu的xml文件;
  第三步:重写onOptionsItenSelected(),修改点击后的操作;

0 0