从头学Android之Menu选项菜单

 

创建一个选项菜单的步骤:

1、覆盖Activity的onCreateOptionsMenu(Menu menu)函数

2、调用menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法来为菜单设置图标

3、当菜单项()被选择时,我们可以通过覆盖Activity的onOptionsItemSeleted()方法来响应事件

下面先来看下onCreateOptionsMenu()函数

public boolean onCreateOptionsMenu (Menu menu)

函数返回值:布尔值,表示是否显示该函数中设置的菜单

参数:Menu对象

onCreateOptionsMenu函数仅在第一次使用菜单时被调用一次。在这个函数我们可以通过Menu对象的add()方法添加菜单子项,这个函数有四个重载函数,下面分别介绍:

public abstract MenuItem add (CharSequence title)

参数说明:指定菜单上的显示文字

[java] view plain copy
 
 print?
  1. public boolean onCreateOptionsMenu(Menu menu) {  
  2.   
  3.    
  4.   
  5.       menu.add("一个参数的add方法的菜单");  
  6.   
  7.       menu.add("一个参数的add方法的菜单2");  
  8.   
  9.       return true;  
  10.   
  11.    }  


注意:这种方式添加的按钮是默认的垂直方式排列:

效果如图1:

public abstract MenuItem add (int groupId, int itemId, int order, int titleRes)

参数说明:

groudId:是指组ID,用以批量地对菜单子项进行处理和排序

itemId:是子项ID,是每一个菜单子项的唯一标识

order:指定菜单子项在选项菜单中的排列顺序

titlerRes: 菜单标题的引用

public abstract MenuItem add (int titleRes)

参数说明:titlerRes: 菜单标题的引用通过string.xml中添加

[html] view plain copy
 
 print?
  1. <string name="titileRes">TitleRes</string>  


 

[java] view plain copy
 
 print?
  1. public boolean onCreateOptionsMenu(Menu menu) {  
  2.   
  3.        menu.add(R.string.titileRes);  
  4.   
  5.       return true;  
  6.   
  7.    }  


效果:

 

 

public abstract MenuItem add (int groupId, int itemId, int order, CharSequence title)

这个是最常用的方法

参数说明:

groudId:是指组ID,用以批量地对菜单子项进行处理和排序

itemId:是子项ID,是每一个菜单子项的唯一标识

order:指定菜单子项在选项菜单中的排列顺序

titler: 菜单标题

[java] view plain copy
 
 print?
  1. public boolean onCreateOptionsMenu(Menu menu) {  
  2.   
  3.    menu.add(0, ITEM, 0, "开始");  
  4.   
  5.    menu.add(0, ITME2, 0, "退出");  
  6.   
  7.    return true;  
  8.   
  9. }  


 

效果:

 

 

为菜单添加响应事件

覆盖onOptionsItemSelected(MenuItem menuItem)函数

   // 通过点击了哪个菜单子项来改变Activity的标题

[java] view plain copy
 
 print?
  1. public boolean onOptionsItemSelected(MenuItem item) {  
  2.    switch (item.getItemId()) {  
  3.    case ITEM:  
  4.      setTitle("单击了菜单子项1");  
  5.      break;  
  6.   
  7.    case ITME2:  
  8.      setTitle("单击了菜单子项2");  
  9.      break;  
  10.    }  
  11.   
  12.    return true;  
  13.   
  14. }  


 

 

 

综合实例:

[java] view plain copy
 
 print?
  1. package com.jiahui.activity;  
  2. import android.app.Activity;  
  3. import android.os.Bundle;  
  4. import android.view.Menu;  
  5. import android.view.MenuItem;   
  6.   
  7. public class MenuDemoActivity extends Activity {  
  8.    private static final int ITEM = Menu.FIRST;  
  9.    private static final int ITME2 = Menu.FIRST + 1;   
  10.    public void onCreate(Bundle savedInstanceState) {  
  11.       super.onCreate(savedInstanceState);  
  12.       setContentView(R.layout.main);  
  13.   
  14.    }  
  15.   
  16.     public boolean onCreateOptionsMenu(Menu menu) {  
  17.         menu.add(0, ITEM, 0, "下载").setIcon(R.drawable.download);//设置图标  
  18.       menu.add(0, ITME2, 0, "上传").setIcon(R.drawable.upload);  
  19.   
  20.       return true;  
  21.   
  22.    }  
  23.   
  24.    // 通过点击了哪个菜单子项来改变Activity的标题  
  25.   
  26.    public boolean onOptionsItemSelected(MenuItem item) {  
  27.    
  28.       switch (item.getItemId()) {  
  29.       case ITEM:  
  30.         setTitle("单击了菜单子项1");  
  31.         break;  
  32.       case ITME2:  
  33.         setTitle("单击了菜单子项2");  
  34.         break;  
  35.        }  
  36.      return true;  
  37.   
  38.    }  
  39.    
  40. }  


 效果:

 

源代码:http://download.csdn.net/detail/jiahui524/3611860

posted @ 2016-11-28 17:34  天涯海角路  阅读(85)  评论(0)    收藏  举报