activity 菜单menu的用法

转载 2011年01月07日 14:45:00

http://blog.chinaunix.net/u2/80919/showart_1981886.html

 

activity 这个类是进行android开发最熟悉的了,是一个具体的交互动作,所以所有ui的加载都在这个类执行启动的时候完成,最明显的是setContentView(R.layout.main);来加载布局,那么ui试图除了布局还有很多东西,menu就是一个例子,那么创建menu的onCreateOptionsMenu函数是activity类中的一个函数也就不难理解了,再大胆的想一下,涉及到activity启动时的UI界面的相关的元素处理函数也应该在activity中.
下面是转载的一个菜单设计的文章. 应该详细阅读一下activity 这个类.

http://oxen.javaeye.com/blog/142126

在Android应用中定制菜单

关键字: android 菜单设计

        通过Android提供的NotePad示例应用,及帮助文档中对菜单的相关描述,现将如何在我们的Androiod应用中定制我们自己的菜单,做一个小结。

 

一、菜单的生成

    对一个Android应用中的每一个屏幕,也就是说,对每一个Activity类,都会拥有一个默认菜单。在Activity类中,定义了几个与菜单有关的方法,供继承于Activity类的子类去重载,从而定制我们自己的菜单。这几个方法为:

public boolean onCreateOptionsMenu(android.view.Menu menu);

public boolean onPrepareOptionsMenu(android.view.Menu menu);

public boolean onOptionsItemSelected(android.view.MenuItem item);

  为了生成我们自己的菜单,Android为我们提供了两个时机点。当在Activity类实例启动时,我们可以通过重载onCreateOptionsMenu()来定制我们的菜单;另外,也可以在菜单每次被调用时,对菜单中的项重新生成,通过重载onPrepareOptionsMenu来实现。对于第二种方式,由于每次调用时都要重新生成,对于那些不经常变化的菜单,效率就会比较低。看下面的代码:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   super.onCreateOptionsMenu(menu);
   menu.add(0, 0, “菜单项一”);
   menu.add(0, 1, “菜单项二”);
   menu.add(0, 2, “菜单项三”);
   return true;
}

    Menu.add()方法第一个参数表示给这个新增的菜单项分配一个分组号;第二个参数表示给这个新增的菜单项分配一个唯一标识id;第三个参数为菜单项的标题。

    我们可以通过调用Menu.setItemShown()或者Menu.setGroupShown()方法来显示或隐藏一些菜单项。

    这里要注意的一个地方是:菜单项的显示顺序是按代码中添加的顺序来的,也就是说Menu.add()方法只能在菜单的最后面新增一个菜单项。另外,第一个参数的分组标识,不会改变菜单项的显示顺序。
二、响应菜单项点击

   当菜单显示出来后,用户点击菜单中的某一菜单项,我们的菜单需要响应这个点击事件。这个也很简单,通过重载onOptionsItemSelected()方法来实现,直接上例子:

@Override
public boolean onOptionsItemSelected(Menu.Item item){
   switch (item.getId()) {
   case 0:
       showAlert(”Menu Item Clicked”, “菜单项一”, “ok”, null, false, null);
       return true;
   case 1:
       showAlert(”Menu Item Clicked”, “菜单项二”, “ok”, null, false, null);
       return true;
   case 2:
       showAlert(”Menu Item Clicked”, “菜单项三”, “ok”, null, false, null);
       return true;
   }
   return false;
}

    这里,我们还可以通过调用Item.setAlphabeticShortcut()或Item.setNumericShortcut()方法来增加菜单项的快捷键操作。

    对响应菜单项点击,还有另一个办法,可以通过实现Runnable类()的一个子类,做为消息句柄来对菜单项点击做响应,但这种办法效率较低,不推荐这么做。

三、增加子菜单

    我们还可以通过调用Menu.addSubMenu()方法,为某个菜单项添加子菜单,这个方法返回一个SubMenu实例,我们可以在这个SubMenu菜单中添加子菜单项。

    注:菜单只能有一级子菜单,不支持多级。

Android选项菜单和上下文菜单解析

选项菜单 创建选项菜单 Activity类的onCreateOptionMenu事件方法用来创建选项菜单,该方法定义如下: @Override public boolean onCreateOpti...
  • GULINHAI12
  • GULINHAI12
  • 2015年08月12日 12:06
  • 6718

在Activity中使用Menu

首先在res目录下新建一个menu文件夹,然后右击res目录-->new-->directory,输入文件夹名menu,点击ok。接着在menu文件夹下再新建一个名叫main的菜单文件,右击menu文...
  • sweetzhangxue
  • sweetzhangxue
  • 2016年09月27日 15:57
  • 345

android标题栏的选择与使用,AppCompatActivity!

android的标题栏是非常重要的一部分,所以添加的方式有多种。 可以通过布局文件,在清单文件中设置android:theme="@android:style/Theme.NoTitleBar"属性,...
  • a516972602
  • a516972602
  • 2016年01月06日 17:34
  • 8456

Android开发之多个Activity跳转(Intent)及菜单用法(menu)

不同的Activity之间进行跳转,下面的例子是一个乘法计算,截图如下: 如下是核心代码 Activituy01 class MyListener implements OnClickLis...
  • thinkpadshi
  • thinkpadshi
  • 2012年11月01日 18:24
  • 3676

Android 实时动态刷新更改菜单

点击Button,做如上q
  • luohaowang320
  • luohaowang320
  • 2014年08月14日 11:44
  • 5229

android 右上角添加菜单

一般如果不把标题栏隐藏(默认是显示的), UI的右上角会有一个默认菜单settings,并没起什么作用。 顺便说一下隐藏标题栏的三种做法: 1.在代码里实现 [java] view ...
  • tingyuanss
  • tingyuanss
  • 2015年05月19日 10:02
  • 14740

Android学习(二)Android studio下创建meun菜单的方法及问题

1.在res上面右键->New->Android resource directory2.点击之后,出现下图Resource type选择menu,名字随便起,点击ok3.可以看到菜单栏已经出现了me...
  • myGFZ
  • myGFZ
  • 2016年11月08日 18:07
  • 5933

Android开发之多个Activity跳转(Intent)及菜单用法(menu)

不同的Activity之间进行跳转,下面的例子是一个乘法计算,截图如下: 如下是核心代码 Activituy01 class MyListener implements OnClickLis...
  • thinkpadshi
  • thinkpadshi
  • 2012年11月01日 18:24
  • 3676

个人安卓学习----ActivityのMenu菜单

打开模拟器或者手机,点击menu键,如图标志位置即为菜单 如图,Android的选项菜单是默认不见的,当用户按下Menu键时程序菜单将会出现在屏幕下方。Android系统默认最多只有6个...
  • u010288658
  • u010288658
  • 2014年07月09日 09:47
  • 420

menu菜单栏的应用, 弹出对话框或退出当前activity

public class MainActivity extends Activity { protected static final int MENU_ABOUT = Menu.FIRST; p...
  • BHduke
  • BHduke
  • 2013年09月05日 20:39
  • 842
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:activity 菜单menu的用法
举报原因:
原因补充:

(最多只允许输入30个字)