Android菜单系列————基础选项菜单(OptionsMenu)

一、介绍

  选项菜单,在默认显示的位置上,OptionsMenu显示在右上角ActionBar的位置

二、创建流程

  • 在onCreateOptionsMenu(...)中生成上下文菜单。
  • 在onOptionsItemSelected(...)中响应上下文菜单项

三、效果

四、代码

代码一【通过Menu组件创建菜单】

1、 在res目录下面创建一个名为menu的包,在menu包里面创建一个menu_basics.xml文件

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <item
        android:id="@+id/action_1"
        android:orderInCategory="100"
        android:title="选项一"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_2"
        android:orderInCategory="100"
        android:title="选项二"
        app:showAsAction="never" />
    <item
        android:id="@+id/action_3"
        android:orderInCategory="100"
        android:title="选项三"
        app:showAsAction="never" />
</menu>

 2、在Java文件中添加下面方法

//创建菜单,加载我们之前定义的menu_main.xml布局文件
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_basics,menu);
        return true;
    }

    //当OptionsMenu被选中的时候处理具体的响应事件
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()){
            case R.id.action_1:
                Toast.makeText(MenuBasics.this,"选项一",Toast.LENGTH_SHORT).show();
                return true;
            case R.id.action_2:
                Toast.makeText(MenuBasics.this,"选项二",Toast.LENGTH_SHORT).show();
                return true;
            case R.id.action_3:
                Toast.makeText(MenuBasics.this,"选项三",Toast.LENGTH_SHORT).show();
                return true;
            default:
                //do nothing
        }
        return super.onOptionsItemSelected(item);
    }

 代码二【完全通过Java代码实现】

public class MenuOptions_Java extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        setContentView(R.layout.activity_main);
        super.onCreate(savedInstanceState);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        /**
         * 第一个int类型的group ID参数:代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
         * 第二个int类型的item ID参数:代表的是项目编号。这个参数非常重要,一个item ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。
         * 第三个int类型的order ID参数:代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。
         * 第四个String类型的title参数:表示选项中显示的文字。
         */
        menu.add(1001, 100, 1, "系统菜单");
        menu.add(1001,101,2,"用户菜单");
        menu.add(1001,102,2,"用户菜单");
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case 100:
                Toast.makeText(MenuOptions_Java.this,"选择了菜单一",Toast.LENGTH_SHORT).show();
                break;
            case 101:
                Toast.makeText(MenuOptions_Java.this, "选择了菜单二",Toast.LENGTH_SHORT).show();
                break;

            case 102:
                Toast.makeText(MenuOptions_Java.this, "选择了菜单三",Toast.LENGTH_SHORT).show();
                break;
            default:
                break;
        }
        return super.onOptionsItemSelected(item);
    }
}

 

posted on 2020-09-12 10:09  迷途行者  阅读(1020)  评论(1)    收藏  举报

导航