Android_文档学习_UI_creating menus
Creating Menus
android 菜单包括三种.Options Menu , Context Menu 和Submenu.
本文完整代码 CSDN下载频道 :http://download.csdn.net/source/2900952 ,
- 1.Options Menu(选项菜单)
-
- @方法1
- 需要重写public boolean onCreateOptionsMenu(Menu menu)和
- public boolean onOptionsItemSelected(MenuItem item)方法,
- 可用如下代码,添加menuitem
-
[java] view plaincopy
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- // TODO Auto-generated method stub
- switch(item.getItemId()) {
- case 1://id可以是用menu.add方法生成的数字,也可是用xml文件生成的R.id.XX
- System.out.println("new clicked");
- return true;
- }
- return super.onOptionsItemSelected(item);
- }
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // TODO Auto-generated method stub
- menu.add(0, 1, 1, "new");
- menu.add(0, 2, 2, "open");
- menu.add(0, 3, 3, "close");
- menu.add(0, 4, 4, "start");
- menu.add(0, 5, 5, "about");
- menu.add(0, 6, 6, "restart");
- menu.add(0, 7, 7, "reopen");
- SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜单");
- Resources res = getBaseContext().getResources();
- sub.setIcon(res.getDrawable(R.drawable.icon));
- sub.setHeaderIcon(res.getDrawable(R.drawable.icon));
- sub.add(1, 3, 0, "Menu A1");
- sub.add(1, 4, 1, "Menu A2");
- return super.onCreateOptionsMenu
-
- @方法2
- 在xml文件中定义好
-
[xhtml] view plaincopy
- <?xml version="1.0" encoding="utf-8"?>
- <menu xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:id="@+id/new_game"
- android:icon="@drawable/ic_new_game"
- android:title="@string/new_game" />
- <item android:id="@+id/quit"
- android:icon="@drawable/ic_quit"
- android:title="@string/quit" />
- </menu>
- 并在java文件中.调用如下方法
-
[java] view plaincopy
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- MenuInflater inflater = getMenuInflater();
- inflater.inflate(R.menu.game_menu, menu);
- return true;
- }
-
-
-
- 2.Context Menu(上下文菜单,类似windows下的右键菜单)
-
- (有点类似android中的dialog对话框.)
-
- 一般,contextMenu多用于ListView 视图中,当用户持续按住一个listItem的时候.就可以弹出ContextMenu来.并执行需要的功能.
- 可用如下代码生成contextMenu:
- 并需要调用
registerForContextMenu()对contextMenu进行注册;
-
[java] view plaincopy
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v,
- ContextMenuInfo menuInfo) {
- // TODO Auto-generated method stub
- menu.setHeaderTitle("ContextMenu");
- menu.add(0, 0, 0, "contextMenuItem 0");
- menu.add(0, 1, 0, "contextMenuItem 1");
- super.onCreateContextMenu(menu, v, menuInfo);
- }
- //长按菜单响应函数
- @Override
- public boolean onContextItemSelected(MenuItem item) {
- setTitle("contextMenuItem"+item.getItemId()+"Clicked");
- return super.onContextItemSelected(item);
- }
- 我在网上发现另一种不用调用
registerForContextMenu()的方法代码如下:
-
[java] view plaincopy
- list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {
- menu.setHeaderTitle("ContextMenu");
- menu.add(0, 0, 0, "contextMenuItem0");
- menu.add(0, 1, 0, "contextMenuItem1");
- }
- });
- 直接将list绑定到list.setOnCreateContextMenuListener(new OnCreateContextMenuListener()
- 接口并在其中用匿名类写相应的代码.
-
-
- 3.Submenu(子菜单,类似windows下,右键菜单中,黑色三角形指向的菜单)
-
-
-
- 当然也可以用两种方式生成.一种是通过xml文件,一种是java中直接写代码.
- android的文档中,只是简单的描述了下,用xml文件设的子菜单.
-
- 我用的后一种方法.代码如下:
-
[java] view plaincopy
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- // TODO Auto-generated method stub
- SubMenu sub = menu.addSubMenu(0, 2, 2, "含子菜单");
- Resources res = getBaseContext().getResources();
- sub.setIcon(res.getDrawable(R.drawable.icon));
- sub.setHeaderIcon(res.getDrawable(R.drawable.icon));
- sub.add(1, 3, 0, "Menu A1");
- sub.add(1, 4, 1, "Menu A2");
- return super.onCreateOptionsMenu(menu);
- }
-
-
- 菜单选项还有许多其他的特性.
- 包括,menu Groups,将按钮分组,菜单分组,可以方便的将组中的菜单visiable属性,Enable属性,checkable属性,一齐改变.
-
- 包括 Checkable menu items,用类似checkbox的属性或者radiobutton的属性.
-
- 包括Shortcut keys(快捷键),
-
- 包括intent for menu items(android中用于activity间传输数据的一种方式).
-
- 包括Dynamically adding Intents(动态增加intent).
-
- 包括Allowing your Activity to be added to menus(允许activty被增加到多个菜单项中)等.
-
-
-
- 本文完整代码CSDN下载频道:http://download.csdn.net/source/2900952 ,
- 由于小生初学android,好多问题都是一知半解.希望看到本文的同学.能够多多支持.并增加交流.