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学习(二十三)SubMenu 子菜单的更多相关文章
- Android开发之Menu:OptionMenu(选项菜单)、ContextMenu(上下文菜单)、SubMenu(子菜单)
菜单的概念,现在已经很普及了.Windows系统.Mac.桌面版Linux.Java Swing等,都有可视化菜单.一.Android平台3种菜单 选项菜单(OptionMenu).上下文菜单(Co ...
- Android进阶(二十八)上下文菜单ContextMenu使用案例
上下文菜单ContextMenu使用案例 前言 回顾之前的应用程序,发现之前创建的选项菜单无法显示了.按照正常逻辑来说,左图中在"商品信息"一栏中应该存在选项菜单,用户可进行分享等 ...
- Android学习笔记之横向二级菜单实现
PS:元旦来一发. 学习内容: 1.Android二级横向菜单的实现过程.效果如上图... 这种横向的二级菜单在很多的app都有所应用.效果看起来还是非常的美观的.也算是项目需要,自己也就学了一下 ...
- android 学习随笔十三(网络:多线程下载)
多线程断点续传下载1.多线程:快* 原理:抢占服务器资源* 单线程下载:线程从第0个字节开始下,下到最后一个字节,在本地硬盘的临时文件中从第0个字节开始写,写到最后一个字节,下载完成时,临时文件也写完 ...
- Android学习(十三) BroadcastReceiver组件(广播)
一.Broadcast(广播) 是一种广泛应用在应用程序之间传输信息的机制. 二.Broadcast(广播接收器) 是对发送出来的广播进行过滤接收并响应的一类组件,它就是用来接收来自系统和应用中的广播 ...
- Salesforce LWC学习(二十三) Lightning Message Service 浅谈
本篇参考: https://trailhead.salesforce.com/content/learn/superbadges/superbadge_lwc_specialist https://d ...
- Android学习二_八:Animation的使用(一) (转)
一.Animations介绍 Animations是一个实现android UI界面动画效果的API,Animations提供了一系列的动画效果,可以进行旋转.缩放.淡入淡出等,这些效果可以应用在绝大 ...
- android学习二(Activity)
前面我简单的介绍了android的一些基础知识,当作热身吧,接下来接触android的四大组件的activity活动. 1.活动Activity是是一种保护用户界面的组件,主要用于和用户进行交互. 活 ...
- 前端学习(二十三)DOM操作,事件(笔记)
javascript 组成部分 1.ECMAScript javascript的核心解释器 2.DOM Document Object Modle 文 ...
随机推荐
- php 内核变量 引用计数器写时复制
写时复制,是一个解决内存复用的方法,就是你在php语言层,如$d=$c=$b=$a='value';把$a赋给另一个或多个变量,这时这个变量都只占用一个内存块,当其中一个变量值改变时,才会开辟另一个内 ...
- OpenGL入门学习(五)
http://developer.178.com/201103/94955548786.html 今天要讲的是三维变换的内容,课程比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果,我只好在最后 ...
- (二十三)深入了解epoll (转)
一. 介绍Epoll 是一种高效的管理socket的模型,相对于select和poll来说具有更高的效率和易用性.传统的select以及poll的效率会因为 socket数量的线形递增而导致呈二次乃至 ...
- PHP 时间获取本周 本月 本季度用法
<?php $week_begin = mktime(0, 0, 0,date("m"),date("d")-date("w&qu ...
- redis集群PHP解决方案
Redis3.2.4 Cluster集群搭建 服务器环境:192.168.3.229192.168.3.193每台服务器搭建3个节点,组成3个主节点,3个从节点的redis集群. 注意:防火墙一定要开 ...
- 关于boostrapValidator动态添加字段(addField)验证的bug
每次码博客,都觉得自己怀才不遇,哎~脑袋有瑕疵,文笔拿不粗手,就直接上干货吧. 在使用boostrapValidator这个验证插件的时候,如果某一个字段是动态添加来的,我们需要调用方法:addFie ...
- jquery mloading
在执行jQuery的ajax时,有的时候请求回来会有较长时间,这个时候,如果什么都没有显示,用户会觉得网站卡住了,所以这个时候,来个mloading会使用户体验更好些. 使用方法很简单 将jquery ...
- js 抽奖小案例
Luck Draw 在线演示:九宫格抽奖 对九宫格形式的抽奖页面进行了一些简单封装.以后有机会再更新其他形式的抽奖.
- 牛客网 牛客小白月赛5 I.区间 (interval)-线段树 or 差分数组?
牛客小白月赛5 I.区间 (interval) 休闲的时候写的,但是写的心情有点挫,都是完全版线段树,我的一个队友直接就水过去了,为啥我的就超内存呢??? 试了一晚上,找出来了,多初始化了add标记数 ...
- BFS+最小生成树+倍增+LCA【bzoj】4242 水壶
[bzoj4242 水壶] Description JOI君所居住的IOI市以一年四季都十分炎热著称. IOI市是一个被分成纵H*横W块区域的长方形,每个区域都是建筑物.原野.墙壁之一.建筑物的区域有 ...