在Android中,菜单分为五种,分别是如下:

1。普通的Menu

  先来看看最简单的Menu怎样实现。

  在主Activity中覆盖onCreateOptionsMenu(Menu menu)方法。

代码
                                    @Override                     public                                         boolean                     onCreateOptionsMenu(Menu menu) {                     //                     TODO Auto-generated method stub                                          menu.add(                    0                    ,                     1                    ,                     1                    ,                     "                    苹果                    "                    ); menu.add(                    0                    ,                     2                    ,                     2                    ,                     "                    香蕉                    "                    );                     return                                         super                    .onCreateOptionsMenu(menu); }                

这样就有了两个菜单选项。如果要添加点击事件,则要覆盖onOptionsItemSelected(MenuItem item)方法。

代码
                                    @Override                     public                                         boolean                     onOptionsItemSelected(MenuItem item) {                     //                     TODO Auto-generated method stub                                                              if                    (item.getItemId()                     ==                                         1                    ){ Toast t                     =                     Toast.makeText(                    this                    ,                     "                    你选的是苹果                    "                    , Toast.LENGTH_SHORT); t.show(); }                     else                                         if                    (item.getItemId()                     ==                                         2                    ){ Toast t                     =                     Toast.makeText(                    this                    ,                     "                    你选的是香蕉                    "                    , Toast.LENGTH_SHORT); t.show(); }                     return                                         true                    ; }                

2。SubMenu

  SubMenu的制作也同样简单,在第一段代码onCreateOptionsMenu(Menu menu)方法中加入几句,成下面这样:

代码
                                    @Override                     public                                         boolean                     onCreateOptionsMenu(Menu menu) {                     //                     TODO Auto-generated method stub                                          menu.add(                    0                    ,                     1                    ,                     1                    ,                     "                    苹果                    "                    ); menu.add(                    0                    ,                     2                    ,                     2                    ,                     "                    香蕉                    "                    ); SubMenu subMenu                     =                     menu.addSubMenu(                    1                    ,                     100                    ,                     100                    ,                     "                    桃子                    "                    ); subMenu.add(                    2                    ,                     101                    ,                     101                    ,                     "                    大桃子                    "                    ); subMenu.add(                    2                    ,                     102                    ,                     102                    ,                     "                    小桃子                    "                    );                     return                                         true                    ; }                

点击“桃子”后就会出现子菜单,有两个子选项,分别是“大桃子”和“小桃子”。

3。Context Menu

  类似于电脑上的右键,长按某个View之后弹出来的菜单。

  首先在main.xml里定义若干个按钮。然后覆盖onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)方法。里面的代码如下:

首先要注册一下,在onCreate方法里,如下代码:

代码
                                    @Override                     public                                         void                     onCreate(Bundle savedInstanceState) {                     super                    .onCreate(savedInstanceState); setContentView(R.layout.main); b1                     =                     (Button) findViewById(R.id.b1); b2                     =                     (Button) findViewById(R.id.b2); registerForContextMenu(b1); registerForContextMenu(b2); }                

代码
                                    @Override                     public                                         void                     onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {                     //                     TODO Auto-generated method stub                                                              if                    (v                    ==                    b1){ menu.setHeaderTitle(                    "                    这是1                    "                    ); menu.add(                    200                    ,                     200                    ,                     200                    ,                     "                    Context Menu 1                    "                    ); menu.add(                    200                    ,                     201                    ,                     201                    ,                     "                    Context Menu 2                    "                    ); }                     else                                         if                    (v                    ==                    b2){ menu.setHeaderTitle(                    "                    这是2                    "                    ); menu.add(                    300                    ,                     300                    ,                     300                    ,                     "                    C 1                    "                    ); menu.add(                    300                    ,                     301                    ,                     301                    ,                     "                    C 2                    "                    ); }                     super                    .onCreateContextMenu(menu, v, menuInfo); }                

4。动态Menu

  动态菜单就是根据不同的界面有不同的菜单。下面的代码实现这样的功能:当主界面的某个TextView的值是“M“和“N”时,弹出不同的菜单。

代码
                                    @Override                     public                                         boolean                     onPrepareOptionsMenu(Menu menu) {                     //                     TODO Auto-generated method stub                                          String currentText                     =                     tv1.getText().toString();                     if                    (                    "                    M                    "                    .equals(currentText)){ menu.clear();                    //                    先清掉菜单                                          MenuItem item                     =                     menu.add(                    0                    ,                     400                    ,                     401                    ,                     "                    to N                    "                    );                    //                    可以通过点击这个菜单项来改变tv1的值这样(变成N)就可以测试了                                          item.setIcon(android.R.drawable.alert_dark_frame);                    //                    android自带的图标                                          }                     if                    (                    "                    N                    "                    .equals(currentText)){ menu.clear();                    //                    先清掉菜单                                          MenuItem item                     =                     menu.add(                    0                    ,                     401                    ,                     402                    ,                     "                    to M                    "                    );                    //                    可以通过点击这个菜单项来改变tv1的值这样(变成M)就可以测试了                                          item.setIcon(android.R.drawable.alert_light_frame); } menu.add(                    0                    ,                     402                    ,                     403                    ,                     "                    Now is                     "                                         +                     currentText);                    //                    现在共有两个菜单子项                                                              return                                         super                    .onPrepareOptionsMenu(menu); }                

  

5。用xml文件方式创建Menu

之前都是用代码的方法创建Menu,用xml配置文件也可以相当方便地制作菜单。

要res/目录下建一个文件夹,名为menu,下面建一个xml文件,名为menu_xml_file.xml,代码如下:

代码
                                    <?                    xml version="1.0" encoding="utf-8"                    ?>                                         <                    menu                     xmlns:android                    ="http://schemas.android.com/apk/res/android"                    >                                         <                    group                     android:id                    ="@+id/grout_main"                    >                                         <                    item                     android:id                    ="@+id/menu_1"                     android:title                    ="This 1"                    />                                         <                    item                     android:id                    ="@+id/menu_2"                     android:title                    ="This 2"                                         />                                         </                    group                    >                                         </                    menu                    >                

在Activity中覆盖onCreateOptionsMenu(Menu menu)方法,代码如下:

代码
                                    @Override                     public                                         boolean                     onCreateOptionsMenu(Menu menu) {                     //                     TODO Auto-generated method stub                                          MenuInflater inflater                     =                     getMenuInflater(); inflater.inflate(R.menu.menu_xml_file, menu);                     return                                         true                    ; }                

其他的都和在Activity中制作菜单一样。

更多相关文章

  1. Android(安卓)闹钟管理类的使用
  2. android图表ichartjs
  3. Android(安卓)闹钟管理类的使用
  4. Android(安卓)Activity的启动
  5. android用户界面-组件Widget-画廊视图Gallery
  6. APP开发实战94-Vector静态图的使用
  7. Android开发者实用代码片段 与大家分享
  8. Android中使Dialog显示时背景不变暗
  9. Android:使用OkHttp解析Json遇到的坑

随机推荐

  1. android环境配置和工程目录介绍
  2. 腾讯轻听模仿流水账(1):16.11.25
  3. arcgis for android 学习 - (7) 在真机上
  4. android 实用项目备份【GitHub】(三)
  5. Android缩放drawable
  6. [Android]Android中全屏或者取消标题栏
  7. [android]androguard相关介绍
  8. android studio 中文乱码,字体优化解决之
  9. Android常用工具及优秀软件
  10. Android(安卓)完美的水平方向滑动ListVie