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())来分别处理各个菜单项功能。

 

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

 

posted @ 2009-05-27 12:20  JeffreyZhou  阅读(184)  评论(0编辑  收藏  举报