• Android学习之菜单


    android中包含多种菜单,本例带来的是选项菜单和上下文菜单。

    1.选项菜单

    在android中,开发者可以在xml文档中部署所要添加的菜单,在后台调用即可。

     1 <menu xmlns:android="http://schemas.android.com/apk/res/android" >
     2 
     3     <item
     4         android:id="@+id/action_add"
     5         android:title="添加"
     6         android:showAsAction="always|withText"/>
     7     <item
     8         android:id="@+id/action_save"
     9         android:title="保存"
    10         android:showAsAction="ifRoom"/>
    11     <item
    12         android:id="@+id/action_discard"
    13         android:title="删除"
    14         android:showAsAction="ifRoom"/>
    15     <item
    16         android:id="@+id/action_delete"
    17         android:title="删除"
    18         android:showAsAction="ifRoom"/>
    19     <item
    20         android:id="@+id/action_undo"
    21         android:title="撤销"
    22         android:showAsAction="ifRoom"/>
    23 </menu>
    menu.xml

    在xml中我们定义了几个常用的菜单,添加、删除、保存等。在xml中定义菜单式通过在<menu/>中定义的。<item/>即为菜单项。android最多可以有六个菜单,超出之后android系统会自动将超出的菜单放在更多的菜单项。

    1     public boolean onCreateOptionsMenu(Menu menu) {
    2         Inflate the menu; this adds items to the action bar if it is present.
    3          MenuInflater inflater = getMenuInflater();
    4          inflater.inflate(R.menu.main, menu);
    5          mOptionsMenu = menu;
    6         
    7             return super.onCreateOptionsMenu(menu);
    8     }
    菜单显示

    重写onCreateOptionsMenu方法,这里调用已经定义好的menu.xml,可以显示我们刚刚定义的菜单项。

    在开发中,菜单也是与事件分不开的。通过onoptionsitemclick,来监听菜单的选中事件。

     1 public boolean onOptionsItemSelected(MenuItem menu)
     2     {
     3     
     4         switch(menu.getItemId())
     5         {
     6         case R.id.action_add:
     7             Toast.makeText(this, "您点击了添加", Toast.LENGTH_LONG).show();
     8             return true;
     9         case R.id.action_delete:
    10             Toast.makeText(this, "您点击了删除", Toast.LENGTH_LONG).show();
    11             return true;
    12         case R.id.action_save:
    13             Toast.makeText(this, "您点击了保存", Toast.LENGTH_LONG).show();
    14             return true;
    15         case R.id.action_undo:
    16             Toast.makeText(this, "你点击了撤销", Toast.LENGTH_LONG).show();
    17             return true;
    18              default:
    19                     return super.onOptionsItemSelected(menu);
    20         }
    21     
    22             
    23         
    24     }
    菜单事件

    当然,开发人员也可以动态的添加菜单,不需要在xml中预先写好每一个菜单项。

    mOptionsMenu.add(1, 1, 1, "添加");第一个参数:菜单项的分组id;第二个参数:菜单项的id;第三个参数:菜单显示顺序的id,android会根据id进行从左到右,从上到下的排序;第四个参数:菜单项的标题

    2.子菜单和上下文菜单

    在android中,子菜单和菜单是同一级的,可以通过submenu.add添加子菜单。添加一个带复选框的子菜单

     1     public boolean onCreateOptionsMenu(Menu menu) {
     2         // Inflate the menu; this adds items to the action bar if it is present.
     3         // MenuInflater inflater = getMenuInflater();
     4             //inflater.inflate(R.menu.main, menu);
     5            // mOptionsMenu = menu;
     6         SubMenu filesubmenu=menu.addSubMenu(1,1,2,"文件");
     7         MenuItem newMenu=filesubmenu.add(1,2,2,"新建");
     8         newMenu.setCheckable(true);
     9         MenuItem openMenu=filesubmenu.add(2,3,3,"打开");
    10         filesubmenu.setGroupCheckable(2, true, true);
    11             return super.onCreateOptionsMenu(menu);
    12     }
    子菜单

    上下文菜单可以和任意的view关联,而且它必须关联一个view,例如button、textview等。

     1 public void onCreateContextMenu(ContextMenu menu,View view,ContextMenuInfo menuInof)
     2     
     3     {
     4         super.onCreateContextMenu(menu, view, menuInof);
     5         menu.add("上下文菜单");
     6         menu.add(0,ITEM1,Menu.NONE,"放大").setCheckable(true).setChecked(true);
     7         menu.add(20,ITEM2,Menu.NONE,"缩小");
     8         menu.add(20,ITEM3,Menu.NONE,"平移");
     9         menu.setGroupCheckable(20, true, true);
    10         SubMenu sub=menu.addSubMenu(0,4,Menu.NONE,"子菜单");
    11         sub.add("子菜单1");
    12         sub.add("子菜单2");
    13     }
    上下文菜单

    上下文菜单中可以添加子菜单的。上下文菜单在添加中,需要注册。

    Button button9=(Button)findViewById(R.id.button9);
    registerForContextMenu(button9);

    这里将定义的上下文菜单注册到button9中。

    如果想实现对上下文菜单选择时间的监听,oncontextitemselected方法实现。

     1      public boolean onContextItemSelected(MenuItem item){       
     2             switch(item.getItemId()){
     3             case ITEM1:
     4                 //在这里添加处理代码
     5                 Toast.makeText(this, "点击了放大", 5000).show();
     6                 return true;
     7             case ITEM2:
     8                 //在这里添加处理代码
     9                 Toast.makeText(this, "点击了缩小", 5000).show();
    10                 break;    
    11             case ITEM3:
    12                 //在这里添加处理代码
    13                 
    14                 break;
    15             }
    16             return true;
    17         }
    上下文菜单事件
  • 相关阅读:
    bzoj3996: [TJOI2015]线性代数
    bzoj3319: 黑白树
    bzoj3745: [Coci2015]Norma
    bzoj2437: [Noi2011]兔兔与蛋蛋
    bzoj1110: [POI2007]砝码Odw
    bzoj4919: [Lydsy1706月赛]大根堆
    bzoj5085: 最大
    bzoj2721: [Violet 5]樱花
    Theoretical & Applied Mechanics Letters第2届编委会2015年度第1次全体编委会工作会议纪要(转自力学学会)
    法国石墨烯研究者成功合成二维材料锗烯
  • 原文地址:https://www.cnblogs.com/ggz19/p/3873161.html
Copyright © 2020-2023  润新知