博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
移动平台开发第八周作业
阅读量:4582 次
发布时间:2019-06-09

本文共 2607 字,大约阅读时间需要 8 分钟。

Android平台提供了3中菜单的实现方式,即选项菜单(OptionMenu)、上下文菜单(ContextMenu)、子菜单(SubMenu)。

1、Option Menu

这种应该是最常见的,一般手机上都会提供Menu的按钮,对应的就是这个菜单弹出。

主要步骤就是复写Activity父类中的onCreateOptionMenu(Menu menu)方法,然后通过Menu的add方法来添加菜单进去。

@Override

public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, MENU_ITEM_COUNTER, 0, "开始");
menu.add(0, MENU_ITEM_COUNTER + 1, 0, "暂停");
menu.add(0, MENU_ITEM_COUNTER + 2, 0, "结束");

return super.onCreateOptionsMenu(menu);

}

ItemId是可以自己定义的int。

private static final int MENU_ITEM_COUNTER = Menu.FIRST;

设置好Menu后需要对每一个MenuItem进行定义处理,当用户点击是会调用onOptionsItemSelected(MenuItem item)这个方法,需要对该方法进行重写 。

@Override

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_ITEM_COUNTER:
myTextView.setText("You click " + item.getTitle().toString()
+ "Menu");
break;
case MENU_ITEM_COUNTER + 1:
myTextView.setText("You click " + item.getTitle().toString()
+ "Menu");
break;
case MENU_ITEM_COUNTER + 2:
myTextView.setText("You click " + item.getTitle().toString()
+ "Menu");
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
这边我做了一个简单的处理,就对TextView进行了Text修改,这里可以做很多业务逻辑。

注意:Android最多支持6个MenuItem,多了以后就摆在More里面。

2、Context Menu

翻译过来就是上下文菜单,其实知道Context最好是意会搞开发的都懂的,这个Mnue还是相当有用的,比如对于文件管理器来说一些增删改查就可以摆在ContextMenu中,它其实是实现了一个用户长按点击后弹出的来一个菜单。

首先,ContextMenu在新建是会调onCreateContextMune(Menu menu)方法,我们需要对它进行复写。

@Override

public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {

//设置面积大一点,好点唉myTextView.setText("*******************************\n" + "要大一些看得才清楚的"        + "*******************************\n");//itemId注意不要重复,否则处理起来很蛋疼menu.add(0, MENU_ITEM_COUNTER + 3, 0, "白色");menu.add(0, MENU_ITEM_COUNTER + 4, 0, "红色");menu.add(0, MENU_ITEM_COUNTER + 5, 0, "蓝色");super.onCreateContextMenu(menu, v, menuInfo);

}

然后注册一下

//要记得在需要的控件上注册上下文菜单

registerForContextMenu(myTextView);
当用户点击时会调用onContextItemSelected(MenuItem item)方法,对其重写。

@Override

public boolean onContextItemSelected(MenuItem item) {

//根据选择不同,对Text进行不同背景色的显示switch (item.getItemId()) {case MENU_ITEM_COUNTER + 3:    myTextView.setBackgroundColor(Color.WHITE);    break;case MENU_ITEM_COUNTER + 4:    myTextView.setBackgroundColor(Color.RED);    break;case MENU_ITEM_COUNTER + 5:    myTextView.setBackgroundColor(Color.BLUE);    break;default:    break;}return super.onContextItemSelected(item);

}

其实看看就知道了,两种实现Menu的方式几乎是一样的,只是在调用方法的时候不一样而已。

个人觉得子菜单的概念应该是从属于以上两个菜单类型的,即两种菜单类型中都可以使用子菜单。 实现很简单:

//申明一个子菜单SubMenu subMenu = menu.addSubMenu("这个是一个子菜单");subMenu.add(0, MENU_ITEM_COUNTER + 6, 0, "这个是子菜单的内容");

转载于:https://www.cnblogs.com/20189210mujian/p/10747595.html

你可能感兴趣的文章
spring + junit 测试
查看>>
.net core 无法获取本地变量或参数的值,因为它在此指令指针中不可用,可能是因为它已经被优化掉了...
查看>>
Poj2186Popular Cows
查看>>
TCP之listen&backlog
查看>>
实验室的毕业照
查看>>
核心编程答案(第六章)
查看>>
Spring 3.x jar 包详解 与 依赖关系
查看>>
java线程详解二
查看>>
maven项目导入依赖jar包并打包为可运行的jar包
查看>>
leecode第二十三题(合并K个排序链表)
查看>>
关于Eclipse的unsupported major minor version 51.0 错误
查看>>
2014年目标
查看>>
weblogic启动后 登陆控制台特别慢的问题
查看>>
Spring加载resource时classpath*:与classpath:的区别
查看>>
雅虎股票接口
查看>>
映射“DataAdapter.TableMappings”
查看>>
Vue双向绑定
查看>>
activity生命周期
查看>>
IO流
查看>>
动画学习之Music图形绘制
查看>>