Android开发之SubMenu子菜单


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

创建子菜单的步骤:

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:

  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. }  

效果:

  • 1
  • 2
  • 下一页

相关内容