选项菜单

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菜单的更多相关文章

  1. Android开发中的menu菜单

    复写onCreateOptionsMenu方法,当点击menu菜单时,调用该方法. @Override public boolean onCreateOptionsMenu(Menu menu) { ...

  2. SharePoint 2013 激活标题字段外的Menu菜单

    前言 SharePoint 有个很特别的字段,就是标题(Title)字段,无论想要链接到项目,还是弹出操作项目的菜单,都是通过标题字段,一直以来需要的时候,都是通过将标题字段改名进行的. 其实,Sha ...

  3. Ecshop 后台增加一个左侧列表菜单menu菜单的方法

    Ecshop 后台增加一个左侧列表菜单menu菜单需要修改三个文件:/admin/includes/inc_menu.php/admin/includes/inc_priv.php/languages ...

  4. [转]ExtJs4 笔记(13) Ext.menu.Menu 菜单、Ext.draw.Component 绘图、Ext.resizer.Resizer 大小变更

    作者:李盼(Lipan)出处:[Lipan] (http://www.cnblogs.com/lipan/)版权声明:本文的版权归作者与博客园共有.转载时须注明本文的详细链接,否则作者将保留追究其法律 ...

  5. 后台增加一个左侧列表菜单menu菜单的方法

    Ecshop 后台增加一个左侧列表菜单menu菜单需要修改三个文件:/admin/includes/inc_menu.php/admin/includes/inc_priv.php/languages ...

  6. 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 ...

  7. Android4.0 -- UI控件之 Menu 菜单的的使用(三)

    上一讲 [Android 开发]:UI控件之 Menu 菜单的的使用(二) 我们讲解了创建上下文菜单的第一种使用方式:Creating a floating context menu [创建悬浮的上下 ...

  8. Android4.0 -- UI控件之 Menu 菜单的的使用(一)

      这一讲开始我们来讲一下Android中菜单的使用方法,菜单是应用中的普通的组件,主要是提供友好和专注的用户体验,你可以在你的Activity中使用 Menu APIs 来提供用户动作和其他选项的操 ...

  9. android menu菜单自动生成

    Android提供了一些简单的方法来为应用添加Menu菜单. 提供了三种类型应用菜单: 一.Options Menu:通过Menu按钮调用菜单 1.在/res/目录下新建menu文件夹,用于存储Men ...

  10. EasyUI - Menu 菜单

    效果: html代码: <div id="mm" class="easyui-menu"> <div id =">New< ...

随机推荐

  1. 王垠:完全用Linux工作

    来自: Zentaur(alles klar) 录一篇旧文 作者:王垠 完全用Linux工作,抛弃windows 我已经半年没有使用 Windows 的方式工作了.Linux 高效的完成了我所有的工作 ...

  2. 深入理解Java中的继承

    对于面向对象的程序设计而言,每一个程序员都应该去了解Java中的封装,继承和多态,那么我今天来说的主要是以继承为核心的主题. 一.关于对继承的理解. 继承是面向对象的三大特性之一,是java中实现代码 ...

  3. Android使用OkHttp实现带进度的上传下载

    先贴上MainActivity.java package cn.edu.zafu.sample; import android.os.Bundle; import android.support.v7 ...

  4. HDU 1506 Largest Rectangle in a Histogram (dp左右处理边界的矩形问题)

    E - Largest Rectangle in a Histogram Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format: ...

  5. [颓废] 改某人的WebGL light mapping demo并9xSSAA

    渲染图(4k) 链接: http://pan.baidu.com/s/1bnB4Wqz 密码: 8839 2px高斯模糊+立方缩小AA:  链接: http://pan.baidu.com/s/1mg ...

  6. SSDB 数据库如何换用 rocksdb 引擎?

     牧童遥指杏花村,一枝红杏出墙来… SSDB 数据库如何换用 rocksdb 引擎? idea's blog 2014-04-12 71 阅读 rocksdb NoSQL SSDB 数据库使用的是 G ...

  7. CSS用Id选择器在本页写样式

    <title>静夜思</title><style type="text/css">#red{color:#ff0000; font-weight ...

  8. Android 调用浏览器和嵌入网页

    Android App开发时由于布局相对麻烦,很多时候一个App通常是由html5和原生控件相结合而成.简单的网页应用可以直接内嵌html5页面即可,对于需要调用复杂的底层功能时则采用原生控件的方式进 ...

  9. 修改PHP网站默认首页

    一般默认的首页文件是index.php index.php3 index.html index.htm之类的,要想修改为myNewIndex.php, 进入服务器Apache目录,找到httpd.co ...

  10. 正则和xml解析

    一般来说是xml解析的开销比正则大些.使用正则搜索,只需搜索<second>就能定位到你要的内容,而xml解析要把节点树在内存中建立起来,所以消耗内存会多些,速度可能会受到一些影响.但对于 ...