Android学习(二十三)SubMenu 子菜单

一、SubMenu子菜单

  和功能菜单相似,但是可以添加子菜单。

 

二、实现步骤:

  1、通过onCreateOptionsMenu方法创建子菜单,可以通过代码动态创建,也可以通过xml进行创建。

  2、通过onOptionsItemSelected方法实现点击子菜单的事件。

 

三、参考代码:

  1、通过代码动态创建子菜单:

    main.java

package com.example.zhengcheng.submenudemo;



import android.support.v7.app.ActionBarActivity;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.view.SubMenu;

import android.widget.Toast;





public class MainActivity extends ActionBarActivity {



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }





    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        //通过代码动态创建子菜单

        SubMenu menu_file = menu.addSubMenu("文件");  //创建文件菜单

        SubMenu menu_edit = menu.addSubMenu("编辑");  //创建编辑菜单



        //为文件菜单创建子菜单

        menu_file.add(1, 101, 1, "新建");

        menu_file.add(1, 102, 1, "打开");

        menu_file.add(1, 103, 1, "保存");

        menu_file.setHeaderTitle("文件操作");              //设置菜单标题

        menu_file.setHeaderIcon(R.mipmap.ic_launcher);    //设置菜单图标



        //为编辑菜单创建子菜单

        menu_edit.add(2, 101, 1, "复制");

        menu_edit.add(2, 102, 1, "粘贴");

        menu_edit.add(2, 103, 1, "剪切");

        menu_edit.setHeaderTitle("编辑操作");              //设置菜单标题

        menu_edit.setHeaderIcon(R.mipmap.ic_launcher);    //设置菜单图标

        return true;

    }



    /**

     * 点击子菜单按钮后触发的操作

     */

    @Override

    public boolean onOptionsItemSelected(MenuItem item) {

        switch (item.getGroupId()) {

            case 1:

                //点击了第一组子菜单,对应第一组子菜单下的按钮

                switch (item.getItemId()) {

                    case 101:

                        Toast.makeText(this, "点击了新建", Toast.LENGTH_SHORT).show();

                        break;

                    case 102:

                        Toast.makeText(this, "点击了打开", Toast.LENGTH_SHORT).show();

                        break;

                    case 103:

                        Toast.makeText(this, "点击了保存", Toast.LENGTH_SHORT).show();

                        break;

                }

                break;

            case 2:

                //点击了第二组子菜单,对应第二组子菜单下的按钮

                switch (item.getItemId()) {

                    case 101:

                        Toast.makeText(this, "点击了复制", Toast.LENGTH_SHORT).show();

                        break;

                    case 102:

                        Toast.makeText(this, "点击了粘贴", Toast.LENGTH_SHORT).show();

                        break;

                    case 103:

                        Toast.makeText(this, "点击了剪切", Toast.LENGTH_SHORT).show();

                        break;

                }

                break;

        }



        return super.onOptionsItemSelected(item);

    }

}

 

  2、通过xml创建子菜单

  生成子菜单文件

  menu.xml

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

    xmlns:app="http://schemas.android.com/apk/res-auto"

    xmlns:tools="http://schemas.android.com/tools"

    tools:context=".MainActivity">

    <item

        android:title="文件"

        app:showAsAction="never">

        <menu>

            <item

                android:id="@+id/menu_new"

                android:title="新建"/>

            <item

                android:id="@+id/menu_open"

                android:title="打开" />

            <item

                android:id="@+id/menu_save"

                android:title="保存" />

            <item

                android:id="@+id/menu_exit"

                android:title="退出" />

        </menu>

    </item>

    <item

        android:title="编辑"

        app:showAsAction="never">

        <menu>

            <item

                android:id="@+id/menu_copy"

                android:title="复制" />

            <item

                android:id="@+id/menu_paste"

                android:title="粘贴" />

            <item

                android:id="@+id/menu_cut"

                android:title="剪切" />

        </menu>

    </item>

</menu>

 

main.java:后台代码文件

package com.example.zhengcheng.submenudemo;



import android.os.Bundle;

import android.support.v7.app.ActionBarActivity;

import android.view.Menu;

import android.view.MenuInflater;

import android.view.MenuItem;

import android.widget.Toast;





public class MainActivity extends ActionBarActivity {



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

    }





    @Override

    public boolean onCreateOptionsMenu(Menu menu) {

        //导入xml菜单内容

        MenuInflater inflater = getMenuInflater();

        inflater.inflate(R.menu.menu_main, menu);

        return true;

    }



    /**

     * 点击子菜单按钮后触发的操作

     */

    @Override

    public boolean onOptionsItemSelected(MenuItem item) {



        switch (item.getItemId()) {

            case R.id.menu_new:

                Toast.makeText(this, "点击了新建", Toast.LENGTH_SHORT).show();

                break;

            case R.id.menu_open:

                Toast.makeText(this, "点击了打开", Toast.LENGTH_SHORT).show();

                break;

            case R.id.menu_save:

                Toast.makeText(this, "点击了保存", Toast.LENGTH_SHORT).show();

                break;

            case R.id.menu_exit:

                Toast.makeText(this, "点击了退出", Toast.LENGTH_SHORT).show();

                finish();

                break;

            case R.id.menu_copy:

                Toast.makeText(this, "点击了复制", Toast.LENGTH_SHORT).show();

                break;

            case R.id.menu_paste:

                Toast.makeText(this, "点击了粘贴", Toast.LENGTH_SHORT).show();

                break;

            case R.id.menu_cut:

                Toast.makeText(this, "点击了剪切", Toast.LENGTH_SHORT).show();

                break;

        }



        return super.onOptionsItemSelected(item);

    }

}

 

你可能感兴趣的:(Android学习)