zoukankan      html  css  js  c++  java
  • Android开发学习之3大类菜单

    在Android系统中,菜单可以分为三类:选项菜单(Option Menu),上下文菜单(Context Menu)以及子菜单(Sub Menu)。

    一.选项菜单(Option Menu)

    创建选项菜单的步骤:

    1.覆盖Activity的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用

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

    3.当菜单项(MenuItem)被选择时,覆盖Activity的onOptionsItemSelected(MenuItem item)来响应事件

    选项菜单的实例:

    1. package com.android.menu.activity;  
    2.  
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5. import android.view.Menu;  
    6. import android.view.MenuItem;  
    7.  
    8. public class OptionMenuActivity extends Activity {  
    9.  
    10.     //声明菜单项常量  
    11.     private static final int ITEM_1 = Menu.FIRST;  
    12.     private static final int ITEM_2 = Menu.FIRST+1;  
    13.     private static final int ITEM_3 = Menu.FIRST+2;  
    14.     public void onCreate(Bundle savedInstanceState) {  
    15.         super.onCreate(savedInstanceState);  
    16.         setContentView(R.layout.main);  
    17.     }  
    18.  
    19.     //覆盖onCreateOptionsMenu(Menu menu)来添加菜单项  
    20.     public boolean onCreateOptionsMenu(Menu menu) {  
    21.         //android.R使用的是系统自带的图标  
    22.         menu.add(0, ITEM_1, 0"开始").setIcon(android.R.drawable.ic_media_play);  
    23.         menu.add(0, ITEM_2, 0"帮助").setIcon(android.R.drawable.ic_menu_help);  
    24.         menu.add(0, ITEM_3, 0"退出").setIcon(android.R.drawable.ic_menu_close_clear_cancel);  
    25.         return true;  
    26.     }  
    27.       
    28.    //覆盖onOptionsItemSelected(MenuItem item)来响应菜单选项被单击事件  
    29.     public boolean onOptionsItemSelected(MenuItem item) {  
    30.         switch (item.getItemId()) {  
    31.         case ITEM_1:  
    32.             setTitle("开始游戏!");  
    33.             break;  
    34.         case ITEM_2:  
    35.             setTitle("查看帮助!");  
    36.             break;  
    37.         case ITEM_3:  
    38.             setTitle("退出游戏!");  
    39.             break;  
    40.         }  
    41.         return true;  
    42.     }  

    效果图:

    二.上下文菜单(Context Menu)

     创建上下文菜单的步骤:

    1.覆盖Activity的onCreateOptionMenu(Menu menu)方法,调用Menu的add( )方法添加菜单项(MenuItem).

    2.覆盖Activity的onOptionsItemSelected(MenuItem item)来响应事件

    3.调用registerForContextMenu( )方法来为视图注册上下文菜单

    上下文菜单的实例(按住“测试Context Menu”2秒,就会出现上下文菜单):

    1. package com.android.context.activity;  
    2.  
    3. import android.app.Activity;  
    4. import android.graphics.Color;  
    5. import android.os.Bundle;  
    6. import android.view.ContextMenu;  
    7. import android.view.Menu;  
    8. import android.view.MenuItem;  
    9. import android.view.View;  
    10. import android.view.ContextMenu.ContextMenuInfo;  
    11. import android.widget.TextView;  
    12.  
    13. public class ContextMenuActivity extends Activity {  
    14.     private static final int ITME_1 = Menu.FIRST;  
    15.     private static final int ITME_2 = Menu.FIRST+1;  
    16.     private static final int ITME_3 = Menu.FIRST+2;  
    17.     private TextView text;  
    18.       
    19.     public void onCreate(Bundle savedInstanceState) {  
    20.         super.onCreate(savedInstanceState);  
    21.         setContentView(R.layout.main);  
    22.         text = (TextView)findViewById(R.id.TextView_1);  
    23.         //调用registerForContextMenu()来注册上下文菜单  
    24.         registerForContextMenu(text);  
    25.     }  
    26.  
    27.     @Override 
    28.     public void onCreateContextMenu(ContextMenu menu, View v,  
    29.             ContextMenuInfo menuInfo) {  
    30.         menu.add(0, ITME_1, 0"红色背景");  
    31.         menu.add(0, ITME_2, 0"蓝色背景");  
    32.         menu.add(0, ITME_3, 0"白色背景");  
    33.     }  
    34.       
    35.     @Override 
    36.     public boolean onContextItemSelected(MenuItem item) {  
    37.         switch (item.getItemId()) {  
    38.         case ITME_1:  
    39.             //设置TextView的背景颜色  
    40.             text.setBackgroundColor(Color.RED);  
    41.             break;  
    42.         case ITME_2:  
    43.             text.setBackgroundColor(Color.BLUE);  
    44.             break;  
    45.         case ITME_3:  
    46.             text.setBackgroundColor(Color.WHITE);  
    47.             break;  
    48.         }  
    49.         return true;  
    50.     }  

    效果图:

     三.子菜单(Sub Menu)

    创建子菜单的步骤:

    1.覆盖Activity的onCreateOptionMenu(Menu menu)方法,调用Menu的addSubMenu( )方法来添加子菜单(Sub Menu)

    2.调用SubMenu的add( )方法来添加子菜单(Sub Menu)

    3.覆盖onContextItemSelect( )方法来响应菜单单击事件

    子菜单的实例:

    1. package com.android.sub.activity;  
    2.  
    3. import android.app.Activity;  
    4. import android.os.Bundle;  
    5. import android.view.Menu;  
    6. import android.view.MenuItem;  
    7. import android.view.SubMenu;  
    8.  
    9. public class SubMenuActivity extends Activity {  
    10.       
    11.     private static final int ITEM_1 = Menu.FIRST;  
    12.     private static final int ITEM_2 = Menu.FIRST+1;  
    13.       
    14.     public void onCreate(Bundle savedInstanceState) {  
    15.         super.onCreate(savedInstanceState);  
    16.         setContentView(R.layout.main);  
    17.     }  
    18.  
    19.     //覆盖onCreateOptionsMenu(Menu menu)方法,添加子菜单项  
    20.     public boolean onCreateOptionsMenu(Menu menu) {  
    21.         SubMenu ad = menu.addSubMenu("添加").setIcon(android.R.drawable.ic_menu_add);  
    22.         SubMenu re = menu.addSubMenu("关闭").setIcon(android.R.drawable.ic_menu_close_clear_cancel);  
    23.         ad.add(0, ITEM_1, 0"文件");  
    24.         ad.add(0, ITEM_2, 0"图片");  
    25.         return true;  
    26.     }  
    27.       
    28.    //覆盖onOptionsItemSelected(MenuItem item),响应菜单选项被单击事件  
    29.     public boolean onOptionsItemSelected(MenuItem item) {  
    30.         switch (item.getItemId()) {  
    31.         case ITEM_1:  
    32.             setTitle("添加文件!");  
    33.             break;  
    34.         case ITEM_2:  
    35.             setTitle("添加图片!");  
    36.             break;  
    37.         }  
    38.         return true;  
    39.     }  

    效果图:

    注:menu.add的方法中的参数:

    1.int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。可以用到的方法有:
    removeGroup(id)
    setGroupCheckable(id, checkable, exclusive)
    setGroupEnabled(id,boolean enabled)
    setGroupVisible(id,visible)
    2.int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个Menu中的选项。在后面使用菜单的时候,就是靠这个item ID来判断,你选中的是哪个选项。
    3.int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的顺序来显示。
    4.String类型的title参数,表示选项中显示的文字。

  • 相关阅读:
    cmd中删除、添加、修改注册表命令
    修改注册表使win server 2012R2开机进入桌面而不是开始界面
    win8.1/2012R2上面安装flash debugger
    ANT中的copy和move标签
    用maven在MANIFEST.MF文件中的Class-Path中增加当前目录(.)
    通过ANT生成MANIFEST.MF中的Class-Path属性
    Junit4进行参数化测试
    DbUnit入门实战
    oracle查看当前正在使用的数据库
    左偏树 P3377【模板】左偏树(可并堆)
  • 原文地址:https://www.cnblogs.com/xiaochao1234/p/3567278.html
Copyright © 2011-2022 走看看