从头学Android之SubMenu子菜单

来源:互联网 发布:mac os qq截图 编辑:程序博客网 时间:2024/04/27 20:54
 

子菜单

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

创建子菜单的步骤:

1、  覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单

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

3、  覆盖onContextItemSelected()方法,响应子菜单的单击事件

 

至于onCreateOptionsMenu()方法在前面已做过介绍,现在来看下Menu的addSubMenu()方法,与add()方法一样它有四个重载方法,参数也同出一辙。在这也就不再多说明了

public abstract SubMenu addSubMenu (int groupId, int itemId, int order, CharSequence title)

 

public abstract SubMenu addSubMenu (int groupId, int itemId, int order, int titleRes)

 

public abstract SubMenu addSubMenu (CharSequence title)

 

public abstract SubMenu addSubMenu (int titleRes)

这四个函数的返回对象都是SubMenu,那么我们就来看下SubMenu吧,随便来了解它的一些属性及方法:

SubMenu是实现Menu的

比较常用的方法有:setHeaderIcon()、setHeaderTitle()

下面通过两个实例来熟悉下SubMenu

 

实例1:

[java] view plaincopyprint?
  1. package com.jiahui.activity;  
  2.   
  3. import java.lang.reflect.Field;  
  4.   
  5. import android.app.Activity;  
  6. import android.os.Bundle;  
  7. import android.view.Menu;  
  8. import android.view.MenuItem;  
  9. import android.view.SubMenu;  
  10.   
  11. public class SubMenuDemoActivity extends Activity {  
  12.   
  13.     private static final int ITEM1 = Menu.FIRST;  
  14.     private static final int ITEM2 = Menu.FIRST + 1;  
  15.   
  16.     public void onCreate(Bundle savedInstanceState) {  
  17.         super.onCreate(savedInstanceState);  
  18.         setContentView(R.layout.main);  
  19.     }  
  20.   
  21.     public boolean onCreateOptionsMenu(Menu menu) {  
  22.   
  23.         SubMenu file = menu.addSubMenu("文件");  
  24.         SubMenu edit = menu.addSubMenu("编辑");  
  25.           
  26.         file.add(0, ITEM1, 0"新建");  
  27.         file.add(0, ITEM2, 0"打开");  
  28.         return true;  
  29.     }  
  30.   
  31.     public boolean onOptionsItemSelected(MenuItem item) {  
  32.         switch (item.getItemId()) {  
  33.         case ITEM1:  
  34.             setTitle("新建文件");  
  35.             break;  
  36.   
  37.         case ITEM2:  
  38.             setTitle("打开文件");  
  39.             break;  
  40.         }  
  41.   
  42.         return true;  
  43.     }  
  44.   
  45. }  


效果:

实例2:

[java] view plaincopyprint?
  1. package com.jiahui.activity;  
  2.   
  3. import android.app.Activity;  
  4. import android.os.Bundle;  
  5. import android.view.Menu;  
  6. import android.view.SubMenu;  
  7.   
  8. public class SubMenuDemo_2Activity extends Activity {  
  9.      
  10.     private static final int UPLOAD=Menu.FIRST;  
  11.       
  12.     private static final int DOWNLOAD=Menu.FIRST+1;  
  13.       
  14.       
  15.     private static final int SUB_UPLOAD_A=Menu.FIRST+2;  
  16.     private static final int SUB_UPLOAD_B=Menu.FIRST+3;  
  17.       
  18.     public void onCreate(Bundle savedInstanceState) {  
  19.         super.onCreate(savedInstanceState);  
  20.         setContentView(R.layout.main);  
  21.     }  
  22.   
  23.     @Override  
  24.     public boolean onCreateOptionsMenu(Menu menu) {  
  25.           
  26.           
  27.         SubMenu uploadSubMenu=menu.addSubMenu(0, UPLOAD, 0"上传");    
  28.         uploadSubMenu.setIcon(R.drawable.upload);  
  29.           
  30.         uploadSubMenu.setHeaderIcon(R.drawable.upload);//设置子菜单的标题  
  31.         uploadSubMenu.setHeaderTitle("上传参数设置");//设置子菜单的标题  默认为“上传”  
  32.         uploadSubMenu.add(0, SUB_UPLOAD_A, 0"上传参数1");  
  33.         uploadSubMenu.add(0, SUB_UPLOAD_B, 0"上传参数2");  
  34.           
  35.           
  36.         SubMenu downloadSubMenu=menu.addSubMenu(0, DOWNLOAD, 0"下载");  
  37.         downloadSubMenu.setIcon(R.drawable.download);  
  38.           
  39.         return super.onCreateOptionsMenu(menu);  
  40.     }  
  41.       
  42.       
  43.       
  44. }  



 

 

效果:

 

0 0
原创粉丝点击