Android学习笔记--菜单

来源:互联网 发布:php积分商城源码 编辑:程序博客网 时间:2024/05/16 07:29

Android中菜单分为三类:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)

一。选项菜单

用户单击Menu键弹出的菜单即是选项菜单。

最多只能同时显示6个,超过六个第六个自动显示为更多

目录菜单是给用户提供交互接口的

创建选项菜单的步骤:

1.复写Activity的onCreateOptionsMenu(Menu menu)方法

2.调用Menu的add()方法添加菜单项(MenuItem),且可以调用setIcon()方法设置图标

3.复写onOptionItemSelected()来响应菜单项被选择事件

例:

private static final int ITEM1 = Menu.FIRST;private static final int ITEM2 = Menu.FIRST+1;public boolean onCreateOptionsMenu(Menu menu){   menu.add(0,ITEM1,0,"菜单项1");   menu.add(1,ITEM2,0,"菜单项2");   return super.onCreateOptionsMenu(menu);}public boolean onOptionsItemSelected(MenuItem item){   switch (item.getItemId()){      case ITEM1:           break;      case ITEM2:           break;   }}

二。上下文菜单

用户长时间点击不放所弹出的菜单称为上下文菜单

创建步骤:

1.复写Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜单项

2.复写onContxtItemSelected()方法,响应菜单单击事件

3.调用registerForContextMenu()方法,为视图注册上下文菜单

例:

private static final int ITEM1 = Menu.FIRST;private static final int ITEM2 = Menu.FIRST+1;private static final int ITEM3 = Menu.FIRST+2;private TextView textView;    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        textView = (TextView)findViewById(R.id.TextView);        textView.setText("asfasdfasdfasdf");        registerForContextMenu(textView);    }@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {// TODO Auto-generated method stubmenu.add(0,ITEM1,0,"一");menu.add(0,ITEM2,0,"二");menu.add(0,ITEM3,0,"三");super.onCreateContextMenu(menu, v, menuInfo);}@Overridepublic boolean onContextItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch (item.getItemId()){case ITEM1:break;case ITEM2:break;case ITEM3:break;}return super.onContextItemSelected(item);}

三。子菜单

子菜单就是将相同功能的分组进行多级显示的一种菜单。

步骤:

1.复写Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单项

2.调用SubMenu()的add()方法,添加子菜单(Sub Menu)

3.复写onContextItemSelected()方法,响应菜单点击事件

例:

private static final int ITEM1 = Menu.FIRST;private static final int ITEM2 = Menu.FIRST+1;    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {    SubMenu file = menu.addSubMenu("文件");    SubMenu edit = menu.addSubMenu("编辑");    file.add(0, ITEM1, 0, "新建");    file.add(0, ITEM2, 0, "打开");    return super.onCreateOptionsMenu(menu);    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {    switch (item.getItemId()){    case ITEM1:    setTitle("新建文件!");    break;    case ITEM2:    setTitle("打开文件!");    break;    }    return super.onOptionsItemSelected(item);    }


原创粉丝点击