android各种菜单使用介绍
Android菜单的有这几种:
1,OptionMenue:选项菜单
2,contextMenu:上下文菜单
3,SubMenu子菜单
其中,OptionMenue与contextMenu的区别(OptionMenue与SubMenu区别较小):
1,OptionMenue对应的四activity,一个activity只能拥有一个选项菜单
2,contextMenu对于的是View,每一个View都可以设置上下文菜单
3,一般情况下contextMenu常用于ListView或者GridView;
下面分别进行详细的介绍:
第一:OptionMenue:选项菜单,
1):菜单的实现:
在activity中实现方法:onCreateOptionsMenu()
1.1:设置菜单项可用代码动态设置menuadd();
1.2:通过xml设置,getMenuInflater().inflate
2):监听的实现:
在activity中实现方法:onCreateOptionsMenu()
示例如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case R.id.action_menu_item1:
//设置跳转界面
Intent intent = new Intent(MainActivity.this, SettingActivity.class);
item.setIntent(intent);
//Toast.makeText(this, "点击了菜单1", 0).show();
break;
case R.id.action_menu_item2:
Toast.makeText(this, "点击了菜单2", 0).show();
break;
} return super.onOptionsItemSelected(item);
}
其中main.xml的实现如下:
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.example.optionmenu.MainActivity" > <item
android:id="@+id/action_menu_item1"
android:orderInCategory="100"
android:showAsAction="never"
android:title="设置"/> <item
android:id="@+id/action_menu_item2"
android:orderInCategory="100"
android:showAsAction="never"
android:title="选项"/>
</menu>
第二:contextMenu:上下文菜单(windows下右键的弹出,Android下针对文件长按):
构成:图标,标题,菜单项,监听
创建方法:
1,在View注册上下文菜单registerForContextMenu()
2,添加上下文菜单内容onCreateContextMenu()
2.1:可以通过代码动态添加
2.2:可以加载xml文件夹中的菜单项
3,设置菜单点击后的响应事件onContenxtItemSelected();
示例:mainActivity的实现如下:
public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
showListView();
}
//设置展示的列表
private void showListView(){
ListView listView = (ListView) findViewById(R.id.listview);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, getData());
listView.setAdapter(adapter);
this.registerForContextMenu(listView);//设置菜单选项
}
//为列表设置数据
private ArrayList<String> getData(){
ArrayList<String> list = new ArrayList<String>();
for(int i=0;i<15;i++){
list.add("列表"+i);
}
return list;
} @Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
//设置菜单显示内容
menu.setHeaderTitle("操作");
//方法二:通过xml进行选项的设置
menu.setHeaderIcon(R.drawable.ic_launcher);
//方法一:通过add动态的添加
// menu.add(1, 1, 1, "复制");
// menu.add(1, 2, 1, "粘贴");
// menu.add(1, 3, 1, "剪切");
// menu.add(1, 4, 1, "重命名");
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.main, menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) {
case 1:
Toast.makeText(this, "点击复制", 0).show();
break;
case 2:
Toast.makeText(this, "点击粘贴", 0).show();
break;
case 3:
Toast.makeText(this, "点击剪切", 0).show();
break;
case 4:
Toast.makeText(this, "点击重命名", 0).show();
break;
}
return super.onContextItemSelected(item);
} }
第三:SubMenu子菜单:
这个实现起来和OptionMenue差不多,所需要实现的方法也是一致的,只是需要在onCreateOptionsMenu()方法中定义SubMenu
对象,
具体示例如下:
public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
// getMenuInflater().inflate(R.menu.main, menu);
SubMenu file = menu.addSubMenu("文件");
SubMenu edit = menu.addSubMenu("编辑"); file.add(1, 1, 1, "新建");
file.add(1, 2, 1, "打开");
file.add(1, 3, 1, "保存");
file.setHeaderTitle("文件操作");
file.setHeaderIcon(R.drawable.ic_launcher); edit.add(2, 1, 1, "复制");
edit.add(2, 2, 1, "粘贴");
edit.add(2, 3, 1, "剪切");
edit.add(2, 4, 1, "重命名");
edit.setHeaderTitle("编辑操作");
edit.setHeaderIcon(R.drawable.ic_launcher); return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
if(item.getGroupId()==1){
switch (item.getItemId()) {
case 1:
Toast.makeText(this, "点击新建", 0).show();
break;
case 2:
Toast.makeText(this, "点击打开", 0).show();
break;
case 3:
Toast.makeText(this, "点击保存", 0).show();
break;
}
}else if(item.getGroupId()==2){
switch (item.getItemId()) {
case 1:
Toast.makeText(this, "点击复制", 0).show();
break;
case 2:
Toast.makeText(this, "点击粘贴", 0).show();
break;
case 3:
Toast.makeText(this, "点击剪切", 0).show();
break;
case 4:
Toast.makeText(this, "点击重命名", 0).show();
break;
}
}
return super.onOptionsItemSelected(item);
}
}
作者:Darren
微博:@IT_攻城师
github:@Darren90
出处:http://www.cnblogs.com/fengtengfei/
android各种菜单使用介绍的更多相关文章
- Android滑动菜单框架完全解析,教你如何一分钟实现滑动菜单特效
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8744400 之前我向大家介绍了史上最简单的滑动菜单的实现方式,相信大家都还记得.如 ...
- Android四大基本组件介绍与生命周期
Android四大基本组件介绍与生命周期 Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器 ...
- Android侧滑菜单代码实现
前两天学习了hyman老师讲的Android侧滑菜单的实现,经过自己的整理分享出来给大家学习一下 现在很多APP都有菜单侧滑的功能,本篇文章主要讲解使用自定义的HorizontalScrollView ...
- Android Testing学习01 介绍 测试测什么 测试的类型
Android Testing学习01 介绍 测试测什么 测试的类型 Android 测试 测什么 1.Activity的生命周期事件 应该测试Activity的生命周期事件处理. 如果你的Activ ...
- Xamarin Android教程Android基本知识版本介绍与系统介绍
Xamarin Android教程Android基本知识版本介绍与系统介绍 Xamarin Android教程Android基本知识版本介绍与系统介绍,开发Andriod有时候不像iOS一样轻松,因为 ...
- Android系统架构说明介绍
Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...
- Android SQLite 数据库详细介绍
Android SQLite 数据库详细介绍 我们在编写数据库应用软件时,需要考虑这样的问题:因为我们开发的软件可能会安装在很多用户的手机上,如果应用使用到了SQLite数据库,我们必须在用户初次使用 ...
- 【转】Android 4.2蓝牙介绍
原文网址:http://blog.csdn.net/innost/article/details/9187199 Tieto公司某蓝牙大牛写得<程序员>投稿文章 Android 4.2蓝牙 ...
- Android MVP模式 简单易懂的介绍方式
主要学习这位大神的博客:简而易懂 Android MVP模式 简单易懂的介绍方式 https://segmentfault.com/a/1190000003927200
随机推荐
- mysql恢复数据
1.崩溃恢复: 突然断电.宕机,导致mysql无法正常启动: (1) 关闭数据库. (2) Vim /etc/my.cnf 添加:innodb_force_recovery=1 默认为0. 1( ...
- 昨天去面试,这5个Python面试题都被考到了,Python面试题No6
第1题:字符串的拼接–如何高效的拼接两个字符串? 字符串拼接的几种方法 加号 逗号 直接连接 格式化 join 多行字符串拼接() 加号 print('Python' + 'Plus') 逗号 pri ...
- 剑指Offer(书):二叉树的下一个节点
题目:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回.注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针. 分析:若一个节点有右子树,那么他的下一个节点就是他右子树中 ...
- Java学习笔记(1)-(GridBagLayout)网格袋布局
学习JAVA-布局管理的时候,在书上看到了这么一段话:GridBagLayout的功能非常强大,使用是也比较复杂,考虑到一般的读者很少会使用到这种管理,这里不做介绍.然书本就跳过了,为什么功能强大却很 ...
- 大数据学习——linux系统的网卡配置步骤
ifconfig 查看ip,没有ip时需要配置 配置步骤: 1输入命令setup,选择network configuration,选择runtool,选择device configuration,选择 ...
- zoj 1763 A Simple Question of Chemistry
A Simple Question of Chemistry Time Limit: 2 Seconds Memory Limit: 65536 KB Your chemistry lab ...
- OO第二次作业
第一次作业: 由于第一次作业的调度较为简单,采用FIFO策略,以及不支持捎带功能,因此我的第一次电梯作业并没有设置单独的调度器,而会直接将任务交给电梯,电梯进行调度策略也仅为先运动到people的In ...
- POJ 2002 几何+hash
题目大意: 给定1000个点,寻找有多少组四点对能组成正方形 这里的题目跟上一道做的找平行四边形类似但想法却又不相同的方法 这里找任意2个点形成的一条边,那么可以根据这两个点,找到能和他们组成正方形剩 ...
- Quoit Design(hdu 1007)
题意:给n个点的坐标,求距离最近的一对点之间距离的一半.第一行是一个数n表示有n个点,接下来n行是n个点的x坐标和y坐标.实数. /* 最小点距离问题 采用分治算法,假设对于1-n的区间,我们已经求出 ...
- redis简介【二】
参考:http://www.runoob.com/redis/redis-tutorial.html REmote DIctionary Server(Redis) 是一个由Salvatore San ...