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
随机推荐
- [LUOGU] P2187 小Z的笔记
看范围猜方程,应该是O(n)级别的 f[i]表示前i个合法的最小代价,转移需要枚举断点位置,O(n^2) f[i]表示前i个合法留下的最大个数,同时更新距离最近的26个字母的位置,O(n)转移 f[i ...
- 《C++专项练习》 — (2)
序 C++基础专项练习二,,,水平依然不到家! 错题分析与总结 1 . 有如下模板定义: template <class T> T fun(T x,T y){ return x*x+y*y ...
- Hyperledger Fabric创建通道抛错Error: got unexpected status: FORBIDDEN -- Failed to reach implicit threshold of 1 sub-policies, required 1 remaining: permission denied解决方案
安装Hyperledger Fabric,服务整个都跑起来了,但是抛了一个错,Error: got unexpected status: FORBIDDEN -- Failed to reach im ...
- zoj 1949 Error Correction
Error Correction Time Limit: 2 Seconds Memory Limit: 65536 KB A boolean matrix has the parity p ...
- Laya Tween循环
Laya Tween循环 @author ixenos 需求:做一个循环的缓动动画 方案: 1)如果只是线性变化,那么直接使用timer或者frameLoop来变化 2)如果需要有非线性变化,那么使用 ...
- Linux核心参数Shmmax,shmall,shmni
Linux 下核心参数调整 kernel.shmmax shmmax是核心参数中最重要的参数之一,用于定义单个共享内存段的最大值,shmmax设置应足够大,能在一个共享内存段下容纳下整个的SGA,设置 ...
- 我是一个线程 - IBM刘欣
来自:码农翻身(微信号:coderising) 作者:IBM刘欣 我是一个线程,我一出生就被编了个号: 0×3704,然后被领到一个昏暗的屋子里, 这里我发现了很多和我一模一样的同伴. 我身边的同伴0 ...
- 51nod1135 原根
原根判定:$m>2$,$\varphi (m)$的不同素数是$q_1,q_2,……,q_s$,$(g,m)=1$,则$g$是$m$的一个原根的充要条件是$g^{\frac{\varphi(m)} ...
- React学习之State
本文基于React v16.4.1 初学react,有理解不对的地方,欢迎批评指正^_^ 一.定义组件的两种方式 1.函数定义组件 function Welcome(props) { return & ...
- Fibonacci--poj3070(矩阵快速幂)
http://poj.org/problem?id=3070 Description In the Fibonacci integer sequence, F0 = 0, F1 = 1, and Fn ...