zoukankan      html  css  js  c++  java
  • Android学习——编写菜单

        Android系统中提供了两种形式的菜单:

    l  The Icon Menu

    这种菜单就是在Activity界面展示时我们按下菜单键产生,效果图为:

    这种菜单只能设置图标,快捷方式,不能添加控件。

    l   The Expanded Menu

    展开式菜单,这种菜单不能单独激活,必须是在子菜单中,或者控件的ContextMenu中显示,控件的ContextMenu是在点击控件3秒钟后激活显示,这种菜单上可以增加单选、多选等控件,效果图如下:

     

    菜单的创建方法,是在ActivityView中,都有onCreateOptionsMenu这样的虚函数,可以直接继承,然后在该函数里menu.add()来创建,如下面的代码中加粗的。

        public boolean onCreateOptionsMenu(Menu menu) {

        super.onCreateOptionsMenu(menu);

        // Group ID

        int groupId = 0;

        // The order position of the item

        int menuItemOrder = Menu.NONE;

        // Create the menu item and keep a reference to it.

        MenuItem addMenu = menu.add(groupId, ADD_NEW_TODO,

        menuItemOrder, R.string.addMenu);

       

        MenuItem delMenu = menu.add(groupId, REMOVE_TODO,

                menuItemOrder, R.string.delMenu);

       

        addMenu.setIcon(R.drawable.add);

        delMenu.setIcon(R.drawable.del);

       

        return true;

        }

    菜单创建完后我们可以在onPrepareOptionsMenu(Menu menu)这个继承函数里面根据实际情况来修改菜单的属性,或动态创建。

    同样public void onCreateContextMenu(ContextMenu menu,View v,ContextMenu.ContextMenuInfo menuInfo)这个函数主要用于创建ContextMenu,创建方法一至。

     

       有了创建菜单的方法,我们就想到,这菜单有哪些属性可供我们修改:

    l  setTitle(str):通过这个方法,我们可以设置菜单的显示文字,当然这文字可以是资源编号

    l  setIcon(R.drawable.xxx):设置显示图标,设置值为图标的资源编号

    l  setShortcut(‘0’,’a’):设置菜单快捷健,’0’是数字健盘,’a’是字母健盘上的健

    l  setCheckable(true):这项设置主要是针对radio菜单,checkBox菜单,使用如:

    // Create a new check box item.

    menu.add(0, CHECKBOX_ITEM, Menu.NONE, CheckBox).setCheckable(true);

    // Create a radio button group.

    menu.add(RB_GROUP, RADIOBUTTON_1, Menu.NONE, Radiobutton 1);

    menu.add(RB_GROUP, RADIOBUTTON_2, Menu.NONE, Radiobutton 2);

    menu.add(RB_GROUP, RADIOBUTTON_3, Menu.NONE,

    Radiobutton 3).setChecked(true);

    menu.setGroupCheckable(RB_GROUP, true, true);

     

    好,这些方法也基本够我们用的了,最后我们看一下怎样接受这个菜单的点击事件:

    方法一:

      利用菜单自带的监听器功能,直接监听,就象处理控件事件一样,如:

     menuItem.setOnMenuItemClickListener(new OnMenuItemClickListener() {

    public boolean onMenuItemClick(MenuItem _menuItem) {

    [ ... execute click handling, return true if handled ... ]

    return true;

    }

    });

    方法二:

       ActivityView都直接提供了一个菜单点击统一处理函数,如下:

    public boolean onOptionsItemSelected(MenuItem item) {

    super.onOptionsItemSelected(item);

    // Find which menu item has been selected

    switch (item.getItemId()) {

    // Check for each known menu item

    case (MENU_ITEM):

    [ ... Perform menu handler actions ... ]

    return true;

    }

    // Return false if you have not handled the menu item.

    return false;

    }

    这里通过switch(item.getItemId())来分别处理各个菜单项功能。

     

    了解了这些功能后,就可以试试在我们的程序中加个菜单了。

     

  • 相关阅读:
    Codeforces758C
    Codeforces758B
    CodeForces758A
    数据库实习
    数据结构实习-迷宫(基于Qt实现)
    CodeForces757B
    CodeForces757A
    HDU3790
    数据结构实习
    Codeforces374B
  • 原文地址:https://www.cnblogs.com/zjfstudio/p/3764727.html
Copyright © 2011-2022 走看看