Android中菜单的使用

     Android中菜单是开发者经常需要使用的。Android中的菜单分为如下几种:选项菜单(Option Menu)、上下文菜单(Context Menu)、子菜单(Sub Menu)。

      一、选项菜单

      当用户按下设备上的菜单键后,弹出的菜单就是选项菜单。选项菜单最多只有六个,超过六个第六个就会显示更多。

      选项菜单的创建流程及需要重载的函数如下:

      第一次创建菜单时调用如下方法,只会调用一次:

@Override
public boolean onCreateOptionsMenu(Menu menu){
    //创建菜单
    menu.add(Menu.NONE, Menu.FIRST + 1, 1, "菜单1");
    menu.add(Menu.NONE, Menu.FIRST + 2, 2, "菜单2");
    return true;
}

      此外,还可以使用setIcon()方法为菜单项设置图标。

      每次显示菜单时,都需要调用如下方法:

@Override
public boolean onPrepareOptionsMenu(Menu menu){
    //选项菜单创建之前(onCreateOptionsMenu()方法)之前调用
    return true;
}

     可以在上面的方法中动态的改变menu。

      另外还有以下方法:

@Override
public boolean onOptionsItemSelected(MenuItem menuItem){
    switch (menuItem.getItemId()) {
        case Menu.FIRST+1://收藏
            break;
        case Menu.FIRST+2://预约
            break;
        default:
            break;
    }
    return super.onContextItemSelected(menuItem);
}

      上述的方法可以为菜单项注册点击事件。

@Override
public void onOptionsMenuClosed(Menu menu){
    //关闭选项菜单时调用
}

      上述方法在选项菜单关闭时调用。


      二、上下文菜单

      当用户长按View界面时,弹出的菜单称之为上下文菜单。

      1、调用public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo)方法创建上下文菜单。同选项菜单一样,在其中调用Menu的add方法添加菜单项。

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo){
    //创建上下文菜单
}

      2、重载public boolean onContextItemSelected(MenuItem menuItem)方法注册菜单项的点击事件。

public boolean onContextItemSelected(MenuItem menuItem){
    //为上下文菜单菜单项注册事件
}

      3、public void onContextMenuClosed()方法在上下文菜单被关闭时调用。

public void onContextMenuClosed(Menu menu){
    //上下文菜单关闭时被调用
}

      4、调用registerForContextMenu(View view)方法为视图注册上下文菜单。

registerForContextMenu(View view);//为一个view注册上下文菜单


      三、子菜单

      子菜单就是将相同功能的分组进行多级显示。

@override
public boolean onCreateOptionsMenu(Menu menu) { 
    //调用Menu的addSubMenu()方法来添加子菜单  
    SubMenu menu1 = menu.addSubMenu("菜单1"); 
    SubMenu menu2 = menu.addSubMenu("菜单2"); 
    //添加子菜单  
    menu1.add(0, Menu.FIRST+1, 0, "子菜单1"); 
    menu1.add(0, Menu.FIRST+2, 0, "子菜单2"); 
    return true; 
} 

@override
public boolean onOptionsItemSelected(MenuItem item) { 
    //重写onContextItemSelected()方法,响应子菜单的点击事件
    switch(item.getItemId()){
        case Menu.FIRST+1:
            break;
        case Menu.FIRST+2:
            break;
        default:
            break;
    }
    return super.onContextItemSelected(menuItem);
}


你可能感兴趣的:(Android中菜单的使用)