android之三大菜单(子菜单,选项菜单,上下文菜单)
今天班级同学聚餐,真的是喝的有点多,本来计划今天要完成这篇博客。有点喝多了,写的不好请见谅。想仔细了解的话,看官网说的,是中文的。
https://developer.android.com/guide/topics/ui/menus.html
选项菜单
> 只要重写onCreateOptionsMenu()方法即可
MainActivity.java代码如下:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//四个参数的含义。1,group的id,2,item的id,3,是否排序,4,将要显示的内容menu.add(0,1,0,"菜单一");menu.add(0,2,0,"菜单二");menu.add(0,3,0,"菜单三");menu.add(0,4,0,"菜单四");return true;}
}
运行效果
接下来为菜单添加点击事件,需要重写onOptionsItemSelected()方法。
MainActivity.java代码如下:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//四个参数的含义。1,group的id,2,item的id,3,是否排序,4,将要显示的内容menu.add(0,1,0,"菜单一");menu.add(0,2,0,"菜单二");menu.add(0,3,0,"菜单三");menu.add(0,4,0,"菜单四");return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case 1:Toast.makeText(MainActivity.this,"菜单一",Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this,"菜单二",Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this,"菜单三",Toast.LENGTH_SHORT).show();break;case 4:Toast.makeText(MainActivity.this,"菜单四",Toast.LENGTH_SHORT).show();break;}return true;}
}
运行效果
子菜单
只要在onCreateOptionsMenu()方法中添加
SubMenu sub=menu.addSubMenu(“子菜单”);
sub.add(0,5,0,”子菜单一”);
sub.add(0,6,0,”子菜单二”);
sub.add(0,7,0,”子菜单三”);
然后再为子菜单添加点击事件。
MainActivity.java全部代码如下
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//四个参数的含义。1,group的id,2,item的id,3,是否排序,4,将要显示的内容menu.add(0,1,0,"菜单一");menu.add(0,2,0,"菜单二");menu.add(0,3,0,"菜单三");menu.add(0,4,0,"菜单四");SubMenu sub=menu.addSubMenu("子菜单");sub.add(0,5,0,"子菜单一");sub.add(0,6,0,"子菜单二");sub.add(0,7,0,"子菜单三");return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()){case 1:Toast.makeText(MainActivity.this,"菜单一",Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this,"菜单二",Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this,"菜单三",Toast.LENGTH_SHORT).show();break;case 4:Toast.makeText(MainActivity.this,"菜单四",Toast.LENGTH_SHORT).show();break;case 5:Toast.makeText(MainActivity.this,"子菜单一",Toast.LENGTH_SHORT).show();break;case 6:Toast.makeText(MainActivity.this,"子菜单二",Toast.LENGTH_SHORT).show();break;case 7:Toast.makeText(MainActivity.this,"子菜单三",Toast.LENGTH_SHORT).show();break;}return true;}
}
上下文菜单
只要重写这个方法onCreateContextMenu()如果在为它添加点击事件,就需要再重写onContextItemSelected()方法
MainActivity.java代码如下:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private TextView mTv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTv = (TextView) findViewById(R.id.tv);registerForContextMenu(mTv);//为mTv注册事件}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//四个参数的含义。1,group的id,2,item的id,3,是否排序,4,将要显示的内容menu.add(0, 1, 0, "菜单一");menu.add(0, 2, 0, "菜单二");menu.add(0, 3, 0, "菜单三");menu.add(0, 4, 0, "菜单四");SubMenu sub = menu.addSubMenu("子菜单");sub.add(0, 5, 0, "子菜单一");sub.add(0, 6, 0, "子菜单二");sub.add(0, 7, 0, "子菜单三");return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case 1:Toast.makeText(MainActivity.this, "菜单一", Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this, "菜单二", Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this, "菜单三", Toast.LENGTH_SHORT).show();break;case 4:Toast.makeText(MainActivity.this, "菜单四", Toast.LENGTH_SHORT).show();break;case 5:Toast.makeText(MainActivity.this, "子菜单一", Toast.LENGTH_SHORT).show();break;case 6:Toast.makeText(MainActivity.this, "子菜单二", Toast.LENGTH_SHORT).show();break;case 7:Toast.makeText(MainActivity.this, "子菜单三", Toast.LENGTH_SHORT).show();break;}return true;}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {if (v == mTv) {menu.add(0, 1, 0, "上下文菜单一");menu.add(0, 2, 0, "上下文菜单二");menu.add(0, 3, 0, "上下文菜单三");}super.onCreateContextMenu(menu, v, menuInfo);}@Overridepublic boolean onContextItemSelected(MenuItem item) {switch (item.getItemId()) {case 1:Toast.makeText(MainActivity.this, "上下文菜单一", Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this, "上下文菜单二", Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this, "上下文菜单三", Toast.LENGTH_SHORT).show();break;}return true;}
}
需要长按Textview才行,运行结果,
选项菜单,子菜单,上下文菜单基本使用方法基本就演示完了。
其实也可以写布局文件,直接加载布局文件也行,下面我们就演示下吧。
menu中菜单代码如下:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"><group android:id="@+id/group"><item
android:id="group_one"android:title="选项菜单一"></item><item
android:id="group_two"android:title="选项菜单二"></item><item
android:id="group_three"android:title="选项菜单三"></item><item
android:id="group_four"android:title="选项菜单四"><menu><item
android:id="child_one"android:title="子菜单一"></item><item
android:id="child_two"android:title="子菜单二"></item><item
android:id="child_three"android:title="子菜单三"></item></menu></item></group>
</menu>
MainActivity.java代码如下:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;public class MainActivity extends AppCompatActivity {private TextView mTv;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mTv = (TextView) findViewById(R.id.tv);registerForContextMenu(mTv);//为mTv注册事件}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {//四个参数的含义。1,group的id,2,item的id,3,是否排序,4,将要显示的内容
// menu.add(0, 1, 0, "菜单一");
// menu.add(0, 2, 0, "菜单二");
// menu.add(0, 3, 0, "菜单三");
// menu.add(0, 4, 0, "菜单四");
// SubMenu sub = menu.addSubMenu("子菜单");
// sub.add(0, 5, 0, "子菜单一");
// sub.add(0, 6, 0, "子菜单二");
// sub.add(0, 7, 0, "子菜单三");getMenuInflater().inflate(R.menu.item_menu,menu);return true;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch (item.getItemId()) {case R.id.group_one:Toast.makeText(MainActivity.this, "菜单一", Toast.LENGTH_SHORT).show();break;case R.id.group_two:Toast.makeText(MainActivity.this, "菜单二", Toast.LENGTH_SHORT).show();break;case R.id.group_three:Toast.makeText(MainActivity.this, "菜单三", Toast.LENGTH_SHORT).show();break;case R.id.group_four:Toast.makeText(MainActivity.this, "菜单四", Toast.LENGTH_SHORT).show();break;case R.id.child_one:Toast.makeText(MainActivity.this, "子菜单一", Toast.LENGTH_SHORT).show();break;case R.id.child_two:Toast.makeText(MainActivity.this, "子菜单二", Toast.LENGTH_SHORT).show();break;case R.id.child_three:Toast.makeText(MainActivity.this, "子菜单三", Toast.LENGTH_SHORT).show();break;}return true;}@Overridepublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {if (v == mTv) {menu.add(0, 1, 0, "上下文菜单一");menu.add(0, 2, 0, "上下文菜单二");menu.add(0, 3, 0, "上下文菜单三");}super.onCreateContextMenu(menu, v, menuInfo);}@Overridepublic boolean onContextItemSelected(MenuItem item) {switch (item.getItemId()) {case 1:Toast.makeText(MainActivity.this, "上下文菜单一", Toast.LENGTH_SHORT).show();break;case 2:Toast.makeText(MainActivity.this, "上下文菜单二", Toast.LENGTH_SHORT).show();break;case 3:Toast.makeText(MainActivity.this, "上下文菜单三", Toast.LENGTH_SHORT).show();break;}return true;}
}
运行效果还是跟前面的选项菜单一样。只是数据来自menu中
运行结果:
总结
其实这三种菜单不难,只要按照写一遍就会了。
源码下载
https://github.com/songshuilin/AndroidForBlog/tree/master/androidformenu
android之三大菜单(子菜单,选项菜单,上下文菜单)相关推荐
- android菜单详解三:上下文菜单
创建一个上下文菜单 一个上下文菜单跟PC上的右键菜单类似.你应使用上下文菜单为用户界面上的某个部分提供动作选择功能.在Android中,一个上下文菜单会在用户长按一个界面条目时出现. 你可以为任何Vi ...
- 【Android基础知识】选项菜单、上下文菜单、子菜单的使用
Android菜单类型 菜单是为了增加更多的功能,不占用屏幕的空间.Android中菜单类型有三类,选项菜单(OptionMenu).上下文菜单(ContextMenu).子菜单(SubMenu),下 ...
- Android Menu,OptionMenu选项菜单,ContextMenu上下文菜单,Contextual ActionMode,PopUp Menu,PopU pWi ndow
Android Menu 一.Opti onMenu选项菜单: (一).简介: 1.A ndroi d应用中的菜单默认是隐藏的,只有当用户点击手机上的ME NU 键,系统才会显示菜单.这种菜单叫做选项 ...
- Android 上下文菜单(Context Menu)
一.概述 Android中,上下文菜单是通过onLongClick(...)事件访问的.在事件触发后显示菜单项. 在使用上下文菜单时,通常在onCreate(...)方法中,先行注册上下文菜单.在实现 ...
- Android开发——菜单(Menu)-——上下文菜单(ContextMenu)、 弹出菜单(PopupMenu)
上下文菜单(ContextMenu) 长按某个view不放,就会在屏幕中间弹出ContextMenu. 一个Activity中间只可能有一个OptionMenu,但一个Activity中间有多个Vie ...
- 【Android】上下文菜单ContextMenu的使用
上下文菜单 又称长按菜单.当一个视图注册了上下文菜单时,执行一个在该对象上长按(2秒)的动作,将出现一个具有相关功能的浮动菜单. 类概述 扩展自Menu的上下文菜单提供了修改上下文菜单头(header ...
- java contextmenu_安卓开发_浅谈ContextMenu(上下文菜单)
长下文菜单,即长按view显示一个菜单栏 与OptionMenu的区别 OptionMenu对应的是activity,一个activity只能拥有一个选项菜单 ContextMenu对应的是View, ...
- 图像处理工具包ImagXpress中如何设置上下文菜单
ImagXpress 是世界上最先进的彩色映像和照片图像处理工具包,有着.NET.COM.VC三种组件形式.ImagXpress可以为开发者构建的应用程序提供图像浏览.编辑.打印.TWAIN扫描.文件 ...
- Android菜单:选项菜单+上下文菜单+子菜单
菜单是人机交互的重要接口,在 Android SDK 中,提供了菜单类 android.view.Menu,以完成与菜单有关的操作. Android SDK 提供三种菜单,分别如下. 1)Option ...
最新文章
- 跟我学Springboot开发后端管理系统4:数据库连接池Druid和HikariCP
- 习题7-6 统计大写辅音字母 (15 分)
- LoadRunner SQL 2008
- 如何判断当前主机是物理机还是虚拟机
- 终于弄明白Framework 3.5为什么在IIS的ASP.NET选项找不到?
- 牛客网学习笔记-day01
- UML 类之间的几种关系
- HTTP标准相关的基础概念
- 记得重用layout
- Java并发编程实战~生产者-消费者模式
- 搭建私有helm仓库及图形界面
- 通过NGINX location实现一个域名访问多个项目
- ABI 大屏(示例布局)
- 专栏 | 是什么成就了中国最具创新力的公司,帮他们的超脑计划孵出阿尔法蛋?...
- 身份认证设计的基本准则
- 读取SD卡文件夹下的MP3文件和播放MP3文件
- 列车控制matlab仿真,基于matlab的列车纵向碰撞建模仿真研究
- ReportMachine如何导出PDF文档?
- Scala安装和开发环境配置教程
- 15个免费学习JavaScript的最佳网站