Android 基础知识(Menu)

1。介绍:

从官方文档了解到,从Android3.0(API level 11)开始,Android设备不再要求提供一个专门的菜单按钮,转而推荐使用ActionBar。所以现在市面上很多新设备使用三个虚拟按键,并不再额外提供菜单按钮。

因为Android版本的发展,对于菜单的支持各个版本有很大的区别,而Android3.0是个分水岭,大概可以分为下面三类:

  • OptionMenu和ActionBar:一些操作的集合,如果开发的平台在Android3.0之上,推荐使用ActionBar,如果开发的平台在Android2.3或之下,还是可以使用OptionMenu的。

  • ContextMenu和ActionMode:ContextMenu是一个浮动的窗口形式展现一个选项列表,ActionMode是一个显示在屏幕顶部的操作栏,允许用户选择多个选项,ActionMode在Android3.0之后才有支持。

  • Popup Menu:PopupMenu是固定在View上的模态菜单,以弹出的方式显示,在Android3.0之后才有支持。

2,XML文件注入使用:

【1】创建menu 文件,创建XML文件

【2】XML文件

<menu xmlns:android="http://schemas.android.com/apk/res/android" >



    <item

        android:id="@+id/action_settings1"

        android:orderInCategory="1"

        android:title="aaa"/>

    

    <item

        android:id="@+id/action_settings2"

        android:orderInCategory="2"

        android:title="bbbb"/>



</menu>



【3】重写Activity 中onCreateOptionsMenu 加载菜单

public boolean onCreateOptionsMenu(Menu menu) {

        getMenuInflater().inflate(R.menu.main, menu);

}

【4】重写Activity 中onOptionsItemSelected  

@Override

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {

            case R.id.action1:

                Log.e("Main", "AAAAAAAAAAAAAAAAAA");

                break;

            case  R.id.action2:

                Log.e("Main", "BBBBBBBBBBBB");

                break;

        }

        return super.onOptionsItemSelected(item);

    }

3,代码注入:

【1】onCreateOptionsMenu 创建控件

//当点击手机上的menu菜单执行

    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

//        getMenuInflater().inflate(R.menu.main, menu);

        

        //通过代码的方式添加

        menu.add(0, 1, 0, "前进");

        menu.add(0, 2, 0, "后退");

        menu.add(0, 3, 0, "首页");

        

        return true;

    }

【2】onOptionsItemSelected   //当想要知道具体菜单的哪个条目被选中  需要重写下面这个方法

    

   @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getItemId()) {

        case 1:

            System.out.println("111");

            break;

        case 2:

            System.out.println("2222");

            break;

            

        case 3:

            System.out.println("33333");

            break;

        }

        return super.onOptionsItemSelected(item);

    }

【3】onMenuOpened  //当用户打开菜单的面板 这个方法就会执行


    @Override

    public boolean onMenuOpened(int featureId, Menu menu) {

        //[1]创建对话框

        AlertDialog.Builder builder = new Builder(this);

        builder.setTitle("警告");

        builder.setMessage("测试");

        builder.setPositiveButton("确定", new OnClickListener() {

            

            @Override

            public void onClick(DialogInterface dialog, int which) {

                

            }

        });

        

        builder.setNegativeButton("取消", new OnClickListener() {

            

            @Override

            public void onClick(DialogInterface dialog, int which) {

                

            }

        });

        //[2]弹出对话框

        builder.show();

        

        //不要系统的样式

        return false;

    }

猜你喜欢

转载自blog.csdn.net/Cricket_7/article/details/85054179