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);
    }
}
时间: 2024-10-10 10:21:13

Android学习(二十三)SubMenu 子菜单的相关文章

android学习二十三(解析json格式数据)

前面我们已经掌握了xml格式数据的解析方式,那么接下来我们学习下如何解析json格式的数据.比起xml,json的主要优势在于它体积更小,在网络上传输的时候可以更省流量.但缺点在于,它的语义性差,看起来不如xml直观. 开始之前,先在自己的电脑apache-tomcat-6.0.39\webapps\ROOT路径目录下新建一个get_data.json的文件,然后编辑这个文件,并加入如下json格式的内容: [{"id":"5","version"

Android进阶(二十八)上下文菜单ContextMenu使用案例

上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等操作,但是现在此操作莫名其妙的消失了.写了个测试Demo,如中图所示,一切按照逻辑显示正常.怪就怪在项目中无法显示,起初设想是因为Android系统版本太高问题,但是在别的手机上测试之后发现问题依旧存在.难道是因为顶部Tab标题栏遮挡住了选项菜单的显示?继续测试,通过在别的没有Tab标题栏的页面测试选项菜单,

Android学习笔记之横向二级菜单实现

PS:元旦来一发. 学习内容: 1.Android二级横向菜单的实现过程.效果如上图...   这种横向的二级菜单在很多的app都有所应用.效果看起来还是非常的美观的.也算是项目需要,自己也就学了一下这个效果,首先说一下逻辑.实现的方式其实并不是很难..只不过逻辑上可能有点复杂.原理其实就是一个按钮.当触发按钮的时候弹出PopWindow.PopWindow由两个ListView构成..对两个ListView适当的适配.就可以实现这个效果了..   实现这种效果可以有两种不同的方式..一种是直接

Android笔记二十三.Android基于事件监听器处理机制

转载请表明出处:http://blog.csdn.net/u012637501(嵌入式_小J的天空) 一.Android的事件处理 Android事件处理包括两个部分:Android事件处理机制(基本)和Android消息传递机制(进阶).前者包含三种处理方式,即基于监听的事件处理.基于回调的事件处理.直接绑定到标签;后者包含两种处理方式,即Handler消息传递.异步任务处理. 1.Android的事件处理机制 (1)基于监听的事件处理方式 通常做法是为Android界面组件绑定特定的事件监听

android学习二十(使用HTTP协议访问网络)

使用HttpURLConnection 在Android上发送HTTP请求的方式一般有两种,HttpURLConnection和HttpClient,现在先学习下 HttpURLConnection的用法. 首先需要获取到HttpURLConnection的实例,一般只需new 出一个URL对象,并传入目标网络的地址,然后 调用一下openConnection()方法即可,如下所示: URL URL=new URL("http://www.baidu.com"); HttpURLCon

Android学习(十三) BroadcastReceiver组件(广播)

一.Broadcast(广播) 是一种广泛应用在应用程序之间传输信息的机制. 二.Broadcast(广播接收器) 是对发送出来的广播进行过滤接收并响应的一类组件,它就是用来接收来自系统和应用中的广播. 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能:当网络状态改变时系统会产生一条广播,接收到这条广播就能及时地做出提示和保存数据等操作:当电池电量改变时,系统会产生一条广播,接收到这条广播就能在电量低时告知用户及时保存进度,

Android学习笔记之Menu一级菜单、二级菜单的使用

(1)布局文件没有做更改 (2)在res--menu目录下的main.xml文件中代码如下: <menu xmlns:android="http://schemas.android.com/apk/res/android" > <!-- 一级菜单 --> <item android:id="@+id/file" android:title="@string/file"> <!-- 二级菜单 -->

Android自定义ListView实现侧滑子菜单

惯例,先放效果图,DEMO在最后 想当年博主刚接触Android的时候,看到这个效果心中只有膜拜啊,如果慢慢的自己水平也上来了,就把当年的一个想法给圆满了吧. 好了,废话不多说,先总结总结这个效果: 首先是需要自定义ListView,这点是必须的,然后在ListView的onTouchEvent方法中对事件进行处理 普通的Item的话,是没办法实现这样侧滑的,即使你塞一个HorizontalScrollView进去都不行,所以也必须自定义一个ItemView实现左右侧滑 由于ListView的l

android学习二(Activity)

前面我简单的介绍了android的一些基础知识,当作热身吧,接下来接触android的四大组件的activity活动. 1.活动Activity是是一种保护用户界面的组件,主要用于和用户进行交互. 活动的基本使用方法 1.创建一个项目项目名为ActivityTest.使用手动创建的方式. 选择file->android project填写好项目名和包名等next,不要勾选craete activity这个选项,最后finish 2.创建好包.创建一个类FirstActivity,并继承Activ