Menu菜单
选项菜单
1.菜单的生命周期
* onCreateOptionsMenu() 选项菜单创建时调用(启动Activity时调用 只调用1次)
* onPrepareOptionsMenu() 选项菜单准备时调用(点击Menu键时调用 调用多次)
* onOptionsItemSelected() 选项菜单项选中时调用
* onOptionsMenuClosed() 选项菜单关闭时
2.onCreateOptionsMenu()方法
在onCreateOptionsMenu()中添加菜单项,建议使用
menu.add(1, Menu.FIRST, Menu.FIRST, "xx");
menu.add(1, Menu.FIRST+1, Menu.FIRST+1, "xx");
menu.add(1, Menu.FIRST+2, Menu.FIRST+2, "xx");
添加子菜单
SubMenu sub = menu.addSubMenu(1, Menu.FIRST+4, Menu.FIRST+4, "xxx");
在子菜单中添加菜单项
sub.add(2, Menu.FIRST+5, Menu.FIRST+5, "xx");
sub.add(2, Menu.FIRST+6, Menu.FIRST+6, "xx");
sub.add(2, Menu.FIRST+7, Menu.FIRST+7, "xx");
3.onOptionsItemSelected()方法
在onOptionsItemSelected()中进行菜单项选中事件的操作 比如
int id = item.getItemId();
switch(id) {
case Menu.FIRST:
...
break;
case Menu.FIRST+1:
...
break;
}
例:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(1, Menu.FIRST, Menu.FIRST, "红");
menu.add(1, Menu.FIRST + 1, Menu.FIRST + 1, "黄");// 菜单项
menu.add(1, Menu.FIRST + 2, Menu.FIRST + 2, "蓝"); // 菜单项
menu.add(1, Menu.FIRST + 3, Menu.FIRST + 3, "绿"); // 菜单项
// 添加子菜单
SubMenu sub = menu.addSubMenu(1, Menu.FIRST + 4, Menu.FIRST + 4, "更多"); // 子菜单
sub.add(2, Menu.FIRST + 5, Menu.FIRST + 5, "其他1");
sub.add(2, Menu.FIRST + 6, Menu.FIRST + 6, "其他2");
sub.add(2, Menu.FIRST + 7, Menu.FIRST + 7, "其他3"); // Inflate the menu; this adds items to the action bar if it is present.
//MenuInflater inflater = getMenuInflater();
//inflater.inflate(R.menu.main, menu);
return true;
} @Override
public boolean onPrepareOptionsMenu(Menu menu) {
return super.onPrepareOptionsMenu(menu);
} @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.
int id = item.getItemId();
switch (id) {
case Menu.FIRST:
textview.setTextColor(Color.RED);
break;
case Menu.FIRST + 1:
textview.setTextColor(Color.YELLOW);
break;
case Menu.FIRST + 2:
textview.setTextColor(Color.BLUE);
break;
case Menu.FIRST + 3:
textview.setTextColor(Color.GREEN);
break;
case Menu.FIRST + 5:
textview.setTextColor(Color.CYAN);
break;
case Menu.FIRST + 6:
textview.setTextColor(Color.GRAY);
break;
case Menu.FIRST + 7:
textview.setTextColor(Color.MAGENTA);
break;
}
return super.onOptionsItemSelected(item);
} @Override
public void onOptionsMenuClosed(Menu menu) {
super.onOptionsMenuClosed(menu);
}
上下文菜单
第一种方式
1.生命周期
onCreateContextMenu();//创建菜单时调用
onContextItemSelected();//选中上下文时调用
onContextMenuClosed();//关闭菜单时调用
例:
registerForContextMenu(textview); @Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
switch (v.getId()) {
case R.id.textview:
menu.add(3, Menu.FIRST+5, Menu.FIRST+5, "红");
menu.add(3, Menu.FIRST+6, Menu.FIRST+6, "黄");
SubMenu submenu = menu.addSubMenu(3, Menu.FIRST+7, Menu.FIRST+7, "其他");
submenu.add(4, Menu.FIRST+8, Menu.FIRST+8, "蓝");
submenu.add(4, Menu.FIRST+9, Menu.FIRST+9, "绿");
break; }
super.onCreateContextMenu(menu, v, menuInfo);
} @Override
public boolean onContextItemSelected(MenuItem item) {
int id = item.getItemId();
switch (id) {
case Menu.FIRST+5:
textview.setBackgroundColor(Color.RED);
break;
case Menu.FIRST+6:
textview.setBackgroundColor(Color.YELLOW);
break;
case Menu.FIRST+8:
textview.setBackgroundColor(Color.BLUE);
break;
case Menu.FIRST+9:
textview.setBackgroundColor(Color.GREEN);
break;
}
return super.onContextItemSelected(item);
} @Override
public void onContextMenuClosed(Menu menu) {
// TODO Auto-generated method stub
super.onContextMenuClosed(menu);
}
第二种方式
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/m1"
android:title="m1">
<menu>
<item
android:id="@+id/m5"
android:title="m5"></item>
</menu>
</item>
<item
android:id="@+id/m2"
android:title="m2"></item>
<item
android:id="@+id/m3"
android:title="3"></item>
<item
android:id="@+id/m4"
android:title="m4"></item>
</menu>
public class MainActivity extends AppCompatActivity {
private ListView listview;
private List<String> list;
private ArrayAdapter<String> adapter;
private int position;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listview = (ListView) findViewById(R.id.listview);
initData();
adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
listview.setAdapter(adapter);
registerForContextMenu(listview);
}
private void initData() {
list = new ArrayList<>();
for (int i = 0; i < 30; i++) {
list.add("王者--"+i);
}
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.menu,menu);
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterView.AdapterContextMenuInfo menuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
if(menuInfo!=null){
position = menuInfo.position;
}
switch (item.getItemId()){
case 1:
list.add(0,"王者");
break;
case 2:
list.set(position,"王者归来");
adapter.notifyDataSetChanged();
break;
case 3:
list.remove(position);
adapter.notifyDataSetChanged();
break;
}
return super.onContextItemSelected(item);
}
}
Menu菜单的更多相关文章
- Android开发中的menu菜单
复写onCreateOptionsMenu方法,当点击menu菜单时,调用该方法. @Override public boolean onCreateOptionsMenu(Menu menu) { ...
- SharePoint 2013 激活标题字段外的Menu菜单
前言 SharePoint 有个很特别的字段,就是标题(Title)字段,无论想要链接到项目,还是弹出操作项目的菜单,都是通过标题字段,一直以来需要的时候,都是通过将标题字段改名进行的. 其实,Sha ...
- Ecshop 后台增加一个左侧列表菜单menu菜单的方法
Ecshop 后台增加一个左侧列表菜单menu菜单需要修改三个文件:/admin/includes/inc_menu.php/admin/includes/inc_priv.php/languages ...
- [转]ExtJs4 笔记(13) Ext.menu.Menu 菜单、Ext.draw.Component 绘图、Ext.resizer.Resizer 大小变更
作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...
- 后台增加一个左侧列表菜单menu菜单的方法
Ecshop 后台增加一个左侧列表菜单menu菜单需要修改三个文件:/admin/includes/inc_menu.php/admin/includes/inc_priv.php/languages ...
- node-webkit教程<>Native UI API 之Menu(菜单)
node-webkit教程(6)Native UI API 之Menu(菜单)1 前言... 2 6.1 Menu 概述... 3 6.2 menu api6 6.2.1 new Menu([o ...
- Android4.0 -- UI控件之 Menu 菜单的的使用(三)
上一讲 [Android 开发]:UI控件之 Menu 菜单的的使用(二) 我们讲解了创建上下文菜单的第一种使用方式:Creating a floating context menu [创建悬浮的上下 ...
- Android4.0 -- UI控件之 Menu 菜单的的使用(一)
这一讲开始我们来讲一下Android中菜单的使用方法,菜单是应用中的普通的组件,主要是提供友好和专注的用户体验,你可以在你的Activity中使用 Menu APIs 来提供用户动作和其他选项的操 ...
- android menu菜单自动生成
Android提供了一些简单的方法来为应用添加Menu菜单. 提供了三种类型应用菜单: 一.Options Menu:通过Menu按钮调用菜单 1.在/res/目录下新建menu文件夹,用于存储Men ...
- EasyUI - Menu 菜单
效果: html代码: <div id="mm" class="easyui-menu"> <div id =">New< ...
随机推荐
- C# 多线程通信详解
一.WaitHandler的类层次 可以看到 WaitHandle是 事件(EventWaitHandle).互斥体(Mutex).信号量(Sempahore)的父类. WaitHandle我们最经常 ...
- iOS设备屏幕像素总览
本文永久地址为http://www.cnblogs.com/ChenYilong/p/4011728.html ,转载请注明出处. 本文永久地址为http://www.cnblogs.com/Ch ...
- Unity导出iOS真机测试教程
原地址:http://unity3d.9tech.cn/news/2014/0410/40177.html 学 习了两天的Android开发,我感觉Android开发跟IOS开发和.NET平台下的开发 ...
- 跟着百度学PHP[1]-if条件嵌套
权当自己的学习笔记.望大牛们切勿参考.如若发现错误,万望指出! 慕课任务 假设在发工资的时候,不仅判定性别,还要判定男性是否有房,没有房,可以发放住房补贴,对于女性,判定是否怀孕,怀孕还有怀孕补贴. ...
- 原生Android动作
ACTION_ALL_APPS:打开一个列出所有已安装应用程序的Activity.通常,此操作又启动器处理. ACTION_ANSWER:打开一个处理来电的Activity,通常这个动作是由本地电话拨 ...
- GAE初探-一鼻子灰
考虑到GAE可以一定条件下免费发布app,再加上之前有潜在客户需要用到GAE. 遂决定了解一番. 以比较熟悉的django作为切入点, 1. 首先安装 GAE-launcher,似乎没有太大问题 2. ...
- BZOJ 1602 USACO2008 Oct 牧场行走
翻翻吴大神的刷题记录翻到的... 乍一看是一个树链剖分吓瓜我...难不成吴大神14-10-28就会了树剖?orz... 再一看SB暴力都可过... 然后一看直接树上倍增码个就好了... 人生真是充满着 ...
- 【SpringMVC】SpringMVC系列6之@CookieValue 映射请求Cookie 值
6.@CookieValue 映射请求Cookie 值 6.1.示例 @CookieValue 可让处理方法入参绑定某个 Cookie 值,示例如下:
- Linux下提取IP至文件
ifconfig | grep 'inet[^6]' | sed 's/^\s*//g' | cut -d ' ' -f2 > ips.txt 排除127开头的IP: ifconfig | gr ...
- mysql lower,upper实现大小写
mysql的lower和uppper函数可以将指定字符串转换为小写和大写 select lower('OutSpringTd') as lowerCase, upper('OutSpringTd') ...