zoukankan      html  css  js  c++  java
  • 安卓开发_浅谈SubMenu(子菜单)

    子菜单,即点击菜单后出现一个菜单栏供选择

    创建子菜单的步骤:
      (1) 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单
      (2) 调用SubMenu的add()方法,添加子菜单项
      (3) 覆盖onContextItemSelected()方法,响应子菜单的单击事件

    示例:

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

    1        //动态添加子菜单
    2         
    3         SubMenu file = menu.addSubMenu("文件");//子菜单的名字
    4         SubMenu edit = menu.addSubMenu("编辑");//子菜单的名字
    5         

    (2) 调用SubMenu的add()方法,添加子菜单项

     1         //给子菜单添加菜单项
     2         file.setHeaderTitle("文件操作");//菜单标题
     3         file.setHeaderIcon(R.drawable.icon_72); //菜单图标
     4         file.add(1, 100, 1, "打开");
     5         file.add(1, 101, 1, "关闭");
     6         file.add(1, 102, 1, "删除");
     7         
     8         edit.setHeaderTitle("编辑操作"); 
     9         edit.setHeaderIcon(R.drawable.icon_72);
    10         edit.add(2,100,1,"复制");
    11         edit.add(2,101,1,"粘贴");
    12         edit.add(2,102,1,"剪切");

    // 添加OptionsMenu菜单项,即4,5,6,10,11,12行代码方法
    /* menu.add(groupId, itemId, order, title)
    * groupId:菜单项所在的组
    * itemId:菜单项编号
    * order:排序
    * title:标题
    * setIcon()方法为菜单设置图标,

    (3) 覆盖onContextItemSelected()方法,响应子菜单的单击事件

     1 //添加响应事件
     2     @Override
     3     public boolean onOptionsItemSelected(MenuItem item) {
     4         // TODO Auto-generated method stub
     5         
     6         //先判断组id再判断item 的id
     7         if(item.getGroupId()==1)
     8         {
     9             switch (item.getItemId()) {
    10             case 100:
    11                 Toast.makeText(SubMenu_text.this, "点击了打开", 1).show();
    12                 break;
    13             case 101:
    14                 Toast.makeText(SubMenu_text.this, "点击了关闭", 1).show();
    15                 break;
    16             case 102:
    17                 Toast.makeText(SubMenu_text.this, "点击了删除", 1).show();
    18                 break;
    19                 
    20             default:
    21                 break;
    22             }
    23         }
    24         else if(item.getGroupId()==2)
    25         {
    26             switch (item.getItemId()) {
    27             case 100:
    28                 Toast.makeText(SubMenu_text.this, "点击了复制", 1).show();
    29                 break;
    30             case 101:
    31                 Toast.makeText(SubMenu_text.this, "点击了粘贴", 1).show();
    32                 break;
    33             case 102:
    34                 Toast.makeText(SubMenu_text.this, "点击了剪切", 1).show();
    35                 break;
    36                 
    37             default:
    38                 break;
    39             }
    40         }
    41         return super.onOptionsItemSelected(item);    
    42     }

    完整代码:

     1 package information;
     2 
     3 import com.example.allcode.R;
     4 
     5 import android.app.Activity;
     6 import android.os.Bundle;
     7 import android.view.Menu;
     8 import android.view.MenuItem;
     9 import android.view.SubMenu;
    10 import android.widget.Toast;
    11 
    12 public class SubMenu_text extends Activity{
    13     @Override
    14     protected void onCreate(Bundle savedInstanceState) {
    15         // TODO Auto-generated method stub
    16         super.onCreate(savedInstanceState);
    17         setContentView(R.layout.submenu);
    18     }
    19     
    20     @Override
    21     public boolean onCreateOptionsMenu(Menu menu) {
    22         // TODO Auto-generated method stub
    23         //动态添加子菜单
    24         
    25         SubMenu file = menu.addSubMenu("文件");//子菜单的名字
    26         SubMenu edit = menu.addSubMenu("编辑");//子菜单的名字
    27         
    28         //给子菜单添加菜单项
    29         file.setHeaderTitle("文件操作");//菜单标题
    30         file.setHeaderIcon(R.drawable.icon_72); //菜单图标
    31         file.add(1, 100, 1, "打开");
    32         file.add(1, 101, 1, "关闭");
    33         file.add(1, 102, 1, "删除");
    34         
    35         edit.setHeaderTitle("编辑操作"); 
    36         edit.setHeaderIcon(R.drawable.icon_72);
    37         edit.add(2,100,1,"复制");
    38         edit.add(2,101,1,"粘贴");
    39         edit.add(2,102,1,"剪切");
    40         
    41         return super.onCreateOptionsMenu(menu);
    42         
    43     }
    44     
    45     //添加响应事件
    46     @Override
    47     public boolean onOptionsItemSelected(MenuItem item) {
    48         // TODO Auto-generated method stub
    49         
    50         //先判断组id再判断item 的id
    51         if(item.getGroupId()==1)
    52         {
    53             switch (item.getItemId()) {
    54             case 100:
    55                 Toast.makeText(SubMenu_text.this, "点击了打开", 1).show();
    56                 break;
    57             case 101:
    58                 Toast.makeText(SubMenu_text.this, "点击了关闭", 1).show();
    59                 break;
    60             case 102:
    61                 Toast.makeText(SubMenu_text.this, "点击了删除", 1).show();
    62                 break;
    63                 
    64             default:
    65                 break;
    66             }
    67         }
    68         else if(item.getGroupId()==2)
    69         {
    70             switch (item.getItemId()) {
    71             case 100:
    72                 Toast.makeText(SubMenu_text.this, "点击了复制", 1).show();
    73                 break;
    74             case 101:
    75                 Toast.makeText(SubMenu_text.this, "点击了粘贴", 1).show();
    76                 break;
    77             case 102:
    78                 Toast.makeText(SubMenu_text.this, "点击了剪切", 1).show();
    79                 break;
    80                 
    81             default:
    82                 break;
    83             }
    84         }
    85         return super.onOptionsItemSelected(item);    
    86     }
    87 }
    SubMenu_text.java

    注意:为了实现界面的美化,需要给该activity一个样式

    在AndroidManifest.xml文件下修改

    <activity android:name="information.SubMenu_text"
      android:theme="@android:style/Theme.Light.NoTitleBar">
    </activity>

    效果图:

     

  • 相关阅读:
    jQuery中$.get、$.post、$.getJSON和$.ajax的用法
    easyui笔记
    查询用户表中都存在那些表
    在tomcat下端口号设置后面 添加 URIEncoding=UTF-8可以使传递中文的不乱码
    jquery 实现ajax 上传文件的功能(使用插件 ajaxfileupload)
    oracle 分页(rownum的理解) 以及 树节点的查询
    Server.Transfer,Response.Redirect用法点睛
    Excel 生成sql语句
    exjs3.2的gridPanel的表头总宽度与列的总宽度不一致的解决方案
    Nopi .net下面的Excel第三方dll
  • 原文地址:https://www.cnblogs.com/xqxacm/p/4561868.html
Copyright © 2011-2022 走看看