Android应用开发之android菜单

android提供了三种菜单类型,分别为optionsmenu,context menu,sub menu。options menu就是通过按home键来显示,context menu需要在view上按上2s后显示。这两种menu都有可以加入子菜单,子菜单不能种不能嵌套子菜单。

options menu最多只能在屏幕最下面显示6个菜单选项,成为iconmenu,icon menu不能有checkable选项。多余6的会以more icon menu来调出,成为expanded menu。options menu通过activity的onCreateOptionsMenu来生成,这个函数只会在menu第一次生成时调用。任何想改变options menu的想法只能在onPrepareOptionsMenu来实现,这个函数会在menu显示前调用。onOptionsItemSelected 处理选中的菜单项。

context menu是跟某个具体的view绑定在一起,在activity种用registerForContextMenu来为某个view注册contextmenu。context menu在显示前都会调用onCreateContextMenu来生成menu。onContextItemSelected选中的菜单项。

android还提供了对菜单项进行分组的功能,可以把相似功能的菜单项分成同一个组,这样就可以通过调用setGroupCheckable,setGroupEnabled,setGroupVisible来设置菜单属性,而无须单独设置。

 

一、option Menu
在此介绍最简单的菜单应用代码如下:

public class Menu extends Activity{
   
    private static final int SAVE=1;
    private static final int SAVE_AS=SAVE+1;
    private static final int DELETE=SAVE+2;
   
   
    public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
    }
 
    public boolean onCreateOptionsMenu(Menu menu) {
       MenuInflater inflater = this.getMenuInflater();
       inflater.inflate(R.menu.options_menu, menu);
      
       menu.add(1,SAVE,1,"保存");
       menu.add(1,SAVE_AS,2,"另存为");
       menu.add(1,DELETE,3,"删除");
      
       menu.findItem(SAVE).setIcon(R.drawable.ic_launcher);
      
       return true;
    }
   
    int i=1;
   
     @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
       MenuItem item = menu.findItem(SAVE_AS);
       item.setTitle(item.getTitle()+""+1);
       i++;
       return super.onPrepareOptionsMenu(menu);
    }
 
    public boolean onOptionsItemSelected(MenuItem item) {
   
     switch(item.getItemId()){
        case R.id.newFile:
           Toast.makeText(this, "new file", Toast.LENGTH_LONG).show();
           break;
        case R.id.exit:
           this.finish();
           break;
     }
     return super.onOptionsItemSelected(item);
     }
 
}


对应的main.xml文件为:

<?xml version="1.0"encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 
    <item
        android:id="@+id/newFile"
        android:icon="@drawable/ic_launcher"
        android:title="@string/newFile_title"/>
 
    <item
        android:id="@+id/exit"
        android:icon="@drawable/ic_launcher"
        android:title="@string/exit_title"/>
 
</menu>



运行后,需要点击menu菜单按钮,,即可出现菜单,如图所示:

 

点击”新建文件”(当然现在还没有实现真整的新建文件),会弹出相应的相应



 

二、sub Menu
将onCreateOptionsMenu内代码改成如下代码,即可实现submenu:

public class MenuTestActivity3 extends Activity {
         privatestatic final int SUBMENU = 10;
         privatestatic final int SUBITEM1 = SUBMENU +1;
         privatestatic final int SUBITEM2= SUBMENU +2;
         privatestatic final int SUBITEM3= SUBMENU +3;
         publicvoid onCreate(Bundle savedInstanceState) {
                   super.onCreate(savedInstanceState);
                   setContentView(R.layout.main);
         }
 
         publicboolean onCreateOptionsMenu(Menu menu) {
                   MenuInflaterinflater = this.getMenuInflater();
                   inflater.inflate(R.menu.sub,menu);
 
                   SubMenusubMenu = menu.addSubMenu(1,SUBMENU,1,"子菜单");
                  
                   subMenu.add(20,SUBITEM1,1,"1");
                   subMenu.add(20,SUBITEM2,2,"2");
                   subMenu.add(30,SUBITEM3,3,"3");
                  
                   MenuItemitem = subMenu.getItem(0);
                   subMenu.setGroupCheckable(20,true, true);
                   item.setChecked(true);
                   subMenu.findItem(SUBITEM3).setCheckable(true);
                   returntrue;
         }
}


对应的main.xml文件为:

<?xml version="1.0"encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
 
   <item
       android:id="@+id/menuitem1"
       android:title="menuitem1"/>
 
   <item
       android:id="@+id/menuitem2"
       android:title="menuitem2">
 
       <menu >
 
           <item
               android:id="@+id/menuitem3"
               android:title="menuitem3"/>
 
           <item
               android:id="@+id/menuitem4"
               android:title="menuitem4">
           </item>
       </menu>
   </item>
 
</menu>


运行后可以出现两级菜单:


在点击”子菜单”之后,出现:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值