android 菜单的总结
安卓菜单有三种菜单。
选项菜单: 点击系统菜单按钮会触发
上下文菜单:长按屏幕触发
子菜单:某一个菜单的下一级菜单
具体的描叙:http://blog.csdn.net/zqiang_55/article/details/7038085
写的简洁易懂。呵呵,其他的都太复杂了
我参考这个思路 写了一个演示代码。
package cn.wuwenfu.menudemo; import com.example.menudemo.R; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast; public class MainActivity extends Activity {
private Button contextMenuButton;//上下文菜单
private Button subMenuButton;//子菜单
private Button optionMenuButton;//选项菜单 @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.mainactivity); //获得3个按钮的控件
subMenuButton = (Button)this.findViewById(R.id.submenu_button);
contextMenuButton = (Button)this.findViewById(R.id.contextmenu_button);
optionMenuButton = (Button)this.findViewById(R.id.optionmenu_button); } @Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart(); contextMenuButton.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent in = new Intent();
in.setClass(MainActivity.this, ContextMenuActivity.class);
MainActivity.this.startActivity(in); }
}); subMenuButton.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub Intent in = new Intent();
in.setClass(MainActivity.this, SubMenuActivity.class);
MainActivity.this.startActivity(in); }
}); } //选项菜单
//如果触屏的平板则要注意sdk版本,过高会导致看不到菜单的图标 //两种方法:第一种就是代码生成。第二种就是xml文件。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub //add方法参数说明:参数一是分组的id,参数二:菜单的ID(最重要);参数三:菜单的排序,默认值0表示按照添加的顺序显示
/*menu.add(0, 0, 0, "查看");
menu.add(0, 1, 0, "修改");
menu.add(0, 2, 0, "删除"); menu.add(1, 3, 0, "查看");
menu.add(1, 4, 0, "修改");
menu.add(1, 5, 0, "删除"); //隐藏分组0
menu.setGroupVisible(0, false);
*/ //第二种方式 MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.option_menu, menu); return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub switch (item.getItemId()) {
/*
//是代码生成的,则是具体的数字
case 0:
Toast.makeText(MainActivity.this, "你点击率查看",
Toast.LENGTH_LONG).show(); return true;
case 1:
Toast.makeText(MainActivity.this, "你点击率修改",
Toast.LENGTH_LONG).show(); return true;
case 2:
Toast.makeText(MainActivity.this, "你点击率删除",
Toast.LENGTH_LONG).show(); return true;
case 3:
Toast.makeText(MainActivity.this, "你点击率查看1",
Toast.LENGTH_LONG).show(); return true;
case 4:
Toast.makeText(MainActivity.this, "你点击率修改1",
Toast.LENGTH_LONG).show(); return true;
case 5:
Toast.makeText(MainActivity.this, "你点击率删除1",
Toast.LENGTH_LONG).show(); return true; */ //上面的是基于add的菜单。下面的则是基于xml菜单
//由于这里采用的xml生成,id则必须是android:id对应的。
case R.id.menu1:
Toast.makeText(MainActivity.this, "菜单1", Toast.LENGTH_LONG).show();
return true;
case R.id.menu2:
Toast.makeText(MainActivity.this, "菜单2", Toast.LENGTH_LONG).show();
return true;
case R.id.menu3:
Toast.makeText(MainActivity.this, "菜单3", Toast.LENGTH_LONG).show();
return true; } return false; } }
选项菜单
package cn.wuwenfu.menudemo; import com.example.menudemo.R; import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.widget.Toast; public class SubMenuActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState); setContentView(R.layout.submenuactivity); } @Override
public boolean onCreateOptionsMenu(Menu menu) {
int base = Menu.FIRST;
// 一个menu可以包括多个子菜单
SubMenu subMenu = menu.addSubMenu(0, base+1, Menu.NONE, "系统设置");
// 子菜单可以包括多个菜单项
MenuItem menuitem1 = subMenu.add(base, base+1, base+1, "显示设置");
subMenu.add(base, base+2, base+2, "网络设置");
subMenu.add(base, base+3, base+3, "高级设置");
subMenu.add(base, base+4, base+4, "安全设置"); // 显示菜单请返回true
return true;
} @Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
System.out.println("----->"+item.getGroupId()); //这里要先判断组id 再继续判断子菜单
switch (item.getGroupId()) {
case 1:
switch (item.getItemId()) {
case 2:
Toast.makeText(SubMenuActivity.this, "显示",
Toast.LENGTH_LONG).show(); return true;
case 3:
Toast.makeText(SubMenuActivity.this, "网络",
Toast.LENGTH_LONG).show(); return true;
case 4:
Toast.makeText(SubMenuActivity.this, "高级",
Toast.LENGTH_LONG).show(); return true;
case 5:
Toast.makeText(SubMenuActivity.this, "安全",
Toast.LENGTH_LONG).show(); return true; } return false; default:
break;
} return false;
} }
子菜单
package cn.wuwenfu.menudemo; /*
* 2014-05-23 16:08
* 实现的效果:一个listview。
* 上下文菜单: 删除 修改 查看
* */
import java.util.ArrayList;
import java.util.HashMap; import com.example.menudemo.R; import android.app.Activity;
import android.os.Bundle; import android.util.Log;
import android.view.ContextMenu;
import android.view.MenuItem;
import android.view.View;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast; public class ContextMenuActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.contextmenuactivity); // 获得控件
ListView list = (ListView) findViewById(R.id.android_list1234); // 数据
ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String, Object>>();
for (int i = 0; i < 5; i++) {
HashMap<String, Object> m = new HashMap<String, Object>();
m.put("name", "吴文付" + i);//添加不同数据。
m.put("sex", "男");
m.put("age", "20"); listItem.add(m);
} // 适配器
SimpleAdapter listItemAdapter = new SimpleAdapter(
// activity
this,
// 数据
listItem,
// 样式
R.layout.itemlist,
// 名称与样式的对应
new String[] { "name", "sex", "age" }, new int[] { R.id.name,
R.id.sex, R.id.age }); // 将适配器放入控件中,显示
list.setAdapter(listItemAdapter); // 注册上下文菜单 // 第一种:通过监听事件
/*
* list.setOnCreateContextMenuListener( new
* OnCreateContextMenuListener() {
*
* @Override public void onCreateContextMenu(ContextMenu menu, View
* arg1, ContextMenuInfo arg2) { // TODO Auto-generated method stub
* menu.setHeaderTitle("上下文"); menu.add(0, 0, 0, "查看"); menu.add(0, 1,
* 0, "修改"); menu.add(0, 2, 0, "删除");
*
* } });
*/
// 第二种注册方法
registerForContextMenu(list);
} // 上下文菜单,本例会通过长按条目激活上下文菜单
// 第二种注册方法需要它
@Override
public void onCreateContextMenu(ContextMenu menu, View view,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("上下文菜单");
// 添加菜单项
menu.add(0, 0, 0, "查看");
menu.add(0, 1, 0, "修改");
menu.add(0, 2, 0, "删除");
} // 上下文菜单
// 菜单单击响应()
@Override
public boolean onContextItemSelected(MenuItem item) {
// 获取当前被选择的菜单项的信息
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
.getMenuInfo();
Log.i("braincol", String.valueOf(info.id));
System.out.println("-------->" + String.valueOf(info.id)); // 获得选中的视图对象
TextView tv = (TextView) info.targetView.findViewById(R.id.name); switch (item.getItemId()) {
case 0:
// 在这里添加处理代码
Toast.makeText(ContextMenuActivity.this, "查看" + tv.getText(),
Toast.LENGTH_LONG).show();
break;
case 1:
// 在这里添加处理代码
Toast.makeText(ContextMenuActivity.this, "修改" + tv.getText(),
Toast.LENGTH_LONG).show();
break;
case 2:
// 在这里添加处理代码
Toast.makeText(ContextMenuActivity.this, "删除" + tv.getText(),
Toast.LENGTH_LONG).show();
break;
}
return true;
} }
上下文菜单
工程截图:
运行效果截图:
工程地址:
http://download.csdn.net/detail/douniwan123654/7406031
android 菜单的总结的更多相关文章
- Android菜单详解(四)——使用上下文菜单ContextMenu
之前在<Android菜单详解(二)——创建并响应选项菜单>和<Android菜单详解(三)——SubMenu和IconMenu>中详细讲解了选项菜单,子菜单和图标菜单.今天接 ...
- Android菜单详解(一)——理解android中的Menu
前言 今天看了pro android 3中menu这一章,对Android的整个menu体系有了进一步的了解,故整理下笔记与大家分享. PS:强烈推荐<Pro Android 3>,是我至 ...
- 【转】Android菜单详解——理解android中的Menu--不错
原文网址:http://www.cnblogs.com/qingblog/archive/2012/06/08/2541709.html 前言 今天看了pro android 3中menu这一章,对A ...
- Android菜单(动画菜单、360波纹菜单)
Android菜单(动画菜单.360波纹菜单) 前言:Android菜单常用集合:FragmentTabHost系统菜单.上移式菜单.360波纹菜单.展开式菜单.详解注释,可直接拿来用! 效果: ...
- Android菜单
Android菜单概述 菜单是Activity的一个重要组成部分,它为用户操作提供了快捷的途径.Android提供了一个简单的框架来向程序中添加标准菜单 . 一.创建一个菜单资源 你需要在一个XML ...
- Android菜单(menu)
Android 菜单 我们继续来进行学习,今天写一下在软件中用的还算较多的菜单. 1.Menu 菜单,很显然,作用就是点击不同的选项触发不同的方法.现在在安卓使用中推荐使用ActionBar,但这里 ...
- Android菜单项内容大全
一.介绍: 菜单是许多应用中常见的用户界面组件. Android3.0版本以前,Android设备会提供一个专用"菜单"按钮呈现常用的一些用户操作, Android3.0版本以后, ...
- Android菜单Menu的创建
在res目录下的menu文件夹下创建一个main.xml文件,内容如下: <?xml version="1.0" encoding="utf-8"?> ...
- Android 菜单(OptionMenu)
菜单是用户界面中最常见的元素之一,使用非常频繁,在Android中,菜单被分为如下三种,选项菜单(OptionsMenu).上下文菜单(ContextMenu)和子菜单(SubMenu). 一.概述 ...
- Android—菜单
layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...
随机推荐
- ExtJS4 的dom
Ext使用了三个核心的工具类对我们掌握的DOM进行了完美的封装. ┣ Ext.Element(几乎对DOM的一切进行了封彻底装) ┣ Ext.DomHelper(一个强大的操控UI界面的工具类) ┣ ...
- SQL Server 日志传送[转载]
http://jimshu.blog.51cto.com/3171847/590413 SQL Server 2012 日志传送 一.准备: 数据库为完全恢复模式,并事先做一次完全备份. 共享一个文件 ...
- jquery has deprecated synchronous XMLHTTPRequest
Like many others, my website is using jquery. When I open the developer tools, I see a warning that ...
- 洛谷U4727 小L 的二叉树
U4727 小L 的二叉树 题目背景 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣. 所以,小L当时卡在了二叉树. 题目描述 在计算机科学中,二叉树 ...
- iptables-过滤61开头的ip数据包
iptables -F root@android:/system/bin # iptables -L -n iptables -L -n Chain INPUT (policy ACCEPT) tar ...
- 用扩展方法实现DevExpress-GridControl级联效果
首先,让我们先回顾下.Net中扩展方法的特征: 1. 必须在一个非嵌套.非泛型的静态类中: 2. 至少有一个参数(this 作前缀的参数): 3. 第一个参数必须附加this做前缀: 4. 第 ...
- jdb
http://herongyang.com/jtool/jdb.html http://www.rhcedan.com/2010/06/22/killing-a-java-thread/ 用处:上去杀 ...
- Android 手机红外遥控器实现(转)
源:http://www.cnblogs.com/xiaochao1234/p/3615467.html 经过连续几天的编制,安卓手机代码终于完成了,目前已经将我宿舍,家里,集控室的红外遥控电气设备完 ...
- 【poj解题】3664
简单,两次排序 #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX 500 ...
- cdr格式文件抠图
使用CoreDRAW打开cdr文件,另存为ai格式 使用illustrator打开新文件,使用套索工具选择需要的图形,复制到photoshop中进行编辑