• Android_三种菜单介绍


    Android的菜单分为三种类型:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)

    一.选项菜单

    当用户单击设备上的菜单按钮(Menu),触发事件弹出的菜单就是选项菜单。选项菜单最多只有六个,超过六个第六个就会自动显示 更多 选项来展示显示。

    创建方法:

    1、覆盖ActivityonCreateOptionsMenu(Menu menu)方法,当我们第一次打开菜单时调用。

    2、调用Menuadd()方法添加菜单项(MenuItem),可以调用MenuItemsetIcon()方法为菜单项设置图标。

    3、当菜单项(MenuItem)被选中时,覆盖AcitivyonOptionsMenuSelected()方法响应事件。

    二、上下文菜单

        当用户长按Activity页面时,弹出的菜单我们称为上下文菜单。我们经常在Windows中用鼠标右键单击弹出的菜单就是上下文菜单。

    1、覆盖ActivityonCreateContextMenu()方法,调用Menuadd方法添加菜单项MenuItem

    2、覆盖onContextItemSelected()方法,响应菜单单击事件

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

    三、子菜单

         子菜单就是将相同功能的分组进行多级显示的一种菜单,比如,Windows的“文件”菜单中就有“新建”,“打开”,“关闭”等子菜单。

         创建子菜单的方法

    1、覆盖ActivityonCreateOptionsMenu()方法,调用MenuaddSubMenu()方法添加子菜单项

    2、调用SubMenuadd()饭饭,添加子菜单项

    3、覆盖onCreateItemSelected()方法,响应菜单单击事件

    [java] view plaincopy
     
    1. <span style="font-size:18px;">public class Main extends Activity {  
    2.   
    3. // 菜单项ID  
    4. // FIRST为Menu类中的整形常量  
    5. private static final int ITEM1 = Menu.FIRST;  
    6. private static final int ITEM2 = Menu.FIRST + 1;  
    7. private static final int ITEM3 = Menu.FIRST + 2;  
    8. private static final int ITEM4 = Menu.FIRST + 3;  
    9. private static final int ITEM5 = Menu.FIRST + 4;  
    10. private static final int ITEM6 = Menu.FIRST + 5;  
    11. private static final int ITEM7 = Menu.FIRST + 6;  
    12.   
    13. TextView myTV;  
    14.   
    15.     @Override  
    16.     public void onCreate(Bundle savedInstanceState) {  
    17.         super.onCreate(savedInstanceState);  
    18.         setContentView(R.layout.main);  
    19.           
    20.         myTV = (TextView) findViewById(R.id.myTV);  
    21.         // 此时为myTv设置上下文菜单,长按TextView时响应函数  
    22.         registerForContextMenu(myTV);  
    23.     }  
    24.   
    25. @Override  
    26. // 点击菜单按钮响应的事件  
    27. public boolean onCreateOptionsMenu(Menu menu) {  
    28.   /* 一下代码为选项菜单测试 
    29.      // 添加菜单项 
    30.   // public abstract MenuItemadd(int groupId, int itemId, int order, CharSequence title) 
    31.   // 菜单所在的group,菜单的ID,排列顺序,显示的文字 
    32.   // add()方法返回一个MenuItem对象。而setIcon是MenuItem的方法 
    33.   menu.add(0, ITEM1, 0, "开始").setIcon(R.drawable.ic_launcher); 
    34.   menu.add(0, ITEM2, 0, "开始1"); 
    35.   menu.add(1, ITEM3, 0, "开始2"); 
    36.   menu.add(1, ITEM4, 0, "开始3"); 
    37.   menu.add(1, ITEM5, 0, "开始4"); 
    38. //  menu.add(0, ITEM6, 0, "开始5"); 
    39. //  menu.add(0, ITEM7, 0, "开始6"); 
    40.   */  
    41.     
    42.   /** 
    43.    * 以下代码为添加子菜单的测试代码 
    44.    */  
    45.   // 添加子菜单  
    46.   SubMenu subFile = menu.addSubMenu("文件");  
    47.   SubMenu editFile = menu.addSubMenu("编辑");  
    48.     
    49.   // 为子菜单添加菜单项  
    50.   subFile.add(0, ITEM1, 0"新建");  
    51.   subFile.add(0, ITEM2, 0"打开");  
    52.     
    53.   return true;  
    54. }  
    55.   
    56. @Override  
    57. // 菜单被选中时触发的事件  
    58. public boolean onOptionsItemSelected(MenuItem item) {  
    59.   /* // 在此说明一下,Menu相当于一个容器,而MenuItem相当于容器中容纳的东西 
    60.   switch(item.getItemId()) { 
    61.   case ITEM1: 
    62.    // 设置Activity的Title 
    63.    setTitle("开始游戏1"); 
    64.    break; 
    65.   case ITEM2: 
    66.    setTitle("开始游戏2"); 
    67.    break; 
    68.   case ITEM3: 
    69.    setTitle("开始游戏3"); 
    70.    break; 
    71.   case ITEM4: 
    72.    setTitle("开始游戏4"); 
    73.    break; 
    74.   case ITEM5: 
    75.    setTitle("开始游戏5"); 
    76.    break; 
    77.   case ITEM6: 
    78.    setTitle("开始游戏6"); 
    79.    break; 
    80.   case ITEM7: 
    81.    setTitle("开始游戏7"); 
    82.    break; 
    83.   } 
    84.   */  
    85.     
    86.   /** 
    87.    * 子菜单项响应代码 
    88.    */  
    89.   switch(item.getItemId()) {  
    90.   case ITEM1:  
    91.    // 设置Activity的Title  
    92.    setTitle("新建文件");  
    93.    break;  
    94.   case ITEM2:  
    95.    setTitle("打开文件");  
    96.    break;  
    97.   }  
    98.   return true;  
    99. }  
    100.       
    101. @Override  
    102. // 创建上下文菜单  
    103. public void onCreateContextMenu(ContextMenu menu, View v,  
    104.    ContextMenuInfo menuInfo) {  
    105.   // 向上下文菜单中添加菜单项  
    106.   // 注意此处的menu是ContextMenu  
    107.   menu.add(0, ITEM1, 0"红色背景");  
    108.   menu.add(0, ITEM2, 0"绿色背景");  
    109.   menu.add(1, ITEM3, 0"白色背景");  
    110. }  
    111.   
    112. @Override  
    113. public boolean onContextItemSelected(MenuItem item) {  
    114.   switch(item.getItemId()) {  
    115.   case ITEM1:  
    116.    myTV.setBackgroundColor(Color.RED);  
    117.    break;  
    118.   case ITEM2:  
    119.    myTV.setBackgroundColor(Color.GREEN);  
    120.    break;  
    121.   case ITEM3:  
    122.    myTV.setBackgroundColor(Color.WHITE);  
    123.    break;  
    124.   }  
    125.   return true;  
    126. }  
    127. }  
    128. </span>  
  • 相关阅读:
    Mycat 安全设置
    基于 HA 机制的 Mycat 高可用
    mycat中间件进行MySQL数据表的水平拆分
    mycat中间件进行MySQL数据库的垂直拆分
    mycat中间件进行MySQL的数据读写分离
    dubbo环境搭建--Windows
    分布式应用架构的发展演变RPC
    Java新特性--方法引用
    Java新特性-stream流
    Java新特性-四大函数式接口
  • 原文地址:https://www.cnblogs.com/ruiati/p/3429617.html
Copyright © 2020-2023  润新知