zoukankan      html  css  js  c++  java
  • 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);
        }
    }
  • 相关阅读:
    多进程
    NoSQL-memcached相关
    NoSQL-redis相关
    DB相关复习
    算法
    SQLAlchemy
    Mysql相关
    Python DB-API
    正则习题
    python的正则——re模块
  • 原文地址:https://www.cnblogs.com/zhengcheng/p/4437623.html
Copyright © 2011-2022 走看看