4、从头学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)

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

public boolean onCreateOptionsMenu(Menu menu) {

 

      menu.add("一个参数的add方法的菜单");

      menu.add("一个参数的add方法的菜单2");

      return true;

   }


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

效果如图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中添加

<string name="titileRes">TitleRes</string>


 

public boolean onCreateOptionsMenu(Menu menu) {

       menu.add(R.string.titileRes);

      return true;

   }


效果:

 

 

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

这个是最常用的方法

参数说明:

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

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

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

titler: 菜单标题

   public boolean onCreateOptionsMenu(Menu menu) {

      menu.add(0, ITEM, 0, "开始");

      menu.add(0, ITME2, 0, "退出");

      return true;

   }


 

效果:

 

 

为菜单添加响应事件

覆盖onOptionsItemSelected(MenuItem menuItem)函数

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

   public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
      case ITEM:
        setTitle("单击了菜单子项1");
        break;

      case ITME2:
        setTitle("单击了菜单子项2");
        break;
      }

      return true;

   }


 

 

 

综合实例:

package com.jiahui.activity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem; 

public class MenuDemoActivity extends Activity {
   private static final int ITEM = Menu.FIRST;
   private static final int ITME2 = Menu.FIRST + 1; 
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.main);

   }

    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, ITEM, 0, "下载").setIcon(R.drawable.download);//设置图标
      menu.add(0, ITME2, 0, "上传").setIcon(R.drawable.upload);

      return true;

   }

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

   public boolean onOptionsItemSelected(MenuItem item) {
 
      switch (item.getItemId()) {
      case ITEM:
        setTitle("单击了菜单子项1");
        break;
      case ITME2:
        setTitle("单击了菜单子项2");
        break;
       }
     return true;

   }
 
}


 效果:

 

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

 

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值