[关闭]
@tianyu-211 2016-12-28T02:00:01.000000Z 字数 2259 阅读 1569

(期末要考啊)Android的menu(菜单)按钮的使用

安卓


Android的菜单按钮

使用xml的方式创建菜单项

  1. 在res下的menu目录下新建一个main.xml文件,以menu为根节点,添加一个item就是菜单项

     <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
    <item
        android:id="@+id/action_go"
        android:orderInCategory="1"
        android:title="前进"/>
    <item
        android:id="@+id/action_back"
        android:orderInCategory="2"
        android:title="后退"/>
    <item
        android:id="@+id/action_refresh"
        android:orderInCategory="3"
        android:title="刷新"/>
    
    </menu>
    
  2. 在Activity中复写onCreateOptionsMenu方法,将一个资源转换成menu对象

    //初始化当前Activity的菜单项
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        //1.使用菜单填充器将一个菜单资源设置给menu对象
        getMenuInflater().inflate(R.menu.main, menu);
    
        return true;
    }
    
  3. 如果想要让菜单项有点击效果,需要复写Activity的onMenuItemSelected方法,然后去获取id,进行id的对比。

    //要想对菜单项设置点击事件需要复写一个方法
    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        //获取当前点击的菜单项的Id
        switch (item.getItemId()) {
        case R.menu.action_back​:
            Toast.makeText(getApplicationContext(), "后退", 0).show();
            break;
        case R.menu.action_go:
            Toast.makeText(getApplicationContext(), "前进", 0).show();
            break;
    
    case R.menu.refresh:
        Toast.makeText(getApplicationContext(), "刷新", 0).show();
        break;
    
    }
    
    return super.onMenuItemSelected(featureId, item);
      }
    

使用代码的方式创建菜单

  1. 使用代码的方式来添加菜单选项,就不用创建xml文件了,直接在onCreateOptionsMenu()方法中用menu.add()来添加菜单选项

    //在Activity中复写onCreateOptionsMenu方法,代码添加一个menu的选项 groupid:item所在的分组
    itemId:选项id
    order : 顺序
    title : 文本
    menu.add(1, 0, 1, "示例");

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    /*  //1.使用菜单填充器将一个菜单资源设置给menu对象
        getMenuInflater().inflate(R.menu.main, menu);*/
        //2.使用代码添加菜单项  groupId:分组Id itemId:菜单项的Id  orderId:菜单顺序   title:文本
        menu.add(0, 0, 1, "前进");
        menu.add(0, 1, 2, "后退");
        menu.add(0, 2, 3, "刷新1");
        return true;
    }
    
  2. 在点击菜单选项的时候我们应该改成,与add()方法添加的 itemId 所对应。

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        //获取当前点击的菜单项的Id
        switch (item.getItemId()) {
        case 1:
            Toast.makeText(getApplicationContext(), "后退", 0).show();
            break;
        case 0:
            Toast.makeText(getApplicationContext(), "前进", 0).show();
            break;
    
        case 2:
            Toast.makeText(getApplicationContext(), "刷新", 0).show();
            break;
        }
    
        return super.onMenuItemSelected(featureId, item);
    }
    

屏蔽系统的菜单,弹出自己的dialog

  1. 当menu按键点击时回调用onMenuOpend方法,会调用父类的防范返回一个true,可以直接返回false.不去调用系统的菜单
  2. 或者可以在该方法中定义自定义Dialog

    /**当点击菜单按键时调用*/
    @Override
    public boolean onMenuOpened(int featureId, Menu menu) {
    
         AlertDialog.Builder builder = new Builder(this);
         builder.setTitle("aa");
         builder.setMessage("bbb");
         builder.show();
    
        return false;
    }
    
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注