菜单
来源:互联网 发布:那年呐服饰淘宝代理可信吗 编辑:程序博客网 时间:2024/04/30 09:34
Android平台提供了3中菜单的实现方式,即
1、选项菜单(OptionMenu),
2、上下文菜单(ContextMenu),
3、子菜单(SubMenu).
1.OptionsMenu (选项菜单)
使用方法:
方法一:
1、添加菜单项: 重写onCreateOptionsMenu(Menu menu) ,在其中
添加菜单
menu.add((int groupId, int itemId, int order, charsequence title) .setIcon(drawable ID) 关于参数:
1、组别(groupId),如果不分组的话就写Menu.NONE或者0,
2、itemId,这个很重要,Android根据这个Id来确定不同的菜单
3、顺序(order),哪个菜单项在前面由这个参数的大小决定
4、文本(charsequence ),菜单项的显示文本
- @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);
- }
2、添加选择菜单项事件:在onOptionsItemSelected(MenuItem item)中 switch(item.getItemId()),然后添加对应选择事件
- @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);
- }
3(可选)、添加关闭菜单事件:onOptionsMenuClosed(Menu menu),在其中添加代码即可
4(可选)、添加准备菜单(菜单显示之前的事件),在其中添加代码即可
方法二:
1、添加菜单的样式:在res中创建menu目录,建立xml,
<span style="font-size:18px;"><?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/yang" android:icon="@drawable/ic_launcher" android:title="yang"/> <item android:id="@+id/xiao" android:icon="@drawable/ic_launcher" android:title="xiao"/> <item android:id="@+id/ru" android:icon="@drawable/ic_launcher" android:title="ru"/> <item android:id="@+id/de" android:icon="@drawable/ic_launcher" android:title="de"/></menu></span>
2、显示
重写onCreateOptionsMenu(Menu menu) ,getMenuInflater().inflate(R.menu.options_menu,menu):
a.inflate的作用是将xml定义的而一个布局找出来,但仅仅是找出来。
b.第一个参数是布局,第二个参数是菜单。
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.my_menu, menu);return true;}
剩下的同上
2.contextMenu上下文菜单
概述:继承自Menu。与选项菜单不同的是:选项菜单服务于Activity,而上下文菜单是注册到某个View对象上的 ,长按View才可以显示出来。而且使用上下文菜单需要注册,否则无法显示。最后上下文菜单无法添加图标和快捷键。
- @Override
- public void onCreateContextMenu(ContextMenu menu, View v,
- ContextMenuInfo menuInfo) {
- //设置面积大一点,好点唉
- myTextView.setText("*******************************\n" + "要大一些看得才清楚的"
- + "*******************************\n");
- //itemId注意不要重复
- menu.add(0, 1, 0, "1白色");
- menu.add(0, 2, 0, "2红色");
- menu.add(0, 3, 0, "3蓝色");
- super.onCreateContextMenu(menu, v, menuInfo);
- }
- @Override
- public boolean onContextItemSelected(MenuItem item) {
- //根据选择不同,对Text进行不同背景色的显示
- switch (item.getItemId()) {
- case 1:
- myTextView.setBackgroundColor(Color.WHITE);
- break;
- case 2:
- myTextView.setBackgroundColor(Color.RED);
- break;
- case 3:
- myTextView.setBackgroundColor(Color.BLUE);
- break;
- default:
- break;
- }
- return super.onContextItemSelected(item);
- }
最后注册一下
- //要记得在需要的控件上注册上下文菜单
- registerForContextMenu(myTextView);
3.subMenu子菜单
使用顺序:
1、 覆盖Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单
2、 调用SubMenu的add()方法,添加子菜单
3. 用SubMenu.setHeaderIcon(),和SubMenu.setHeadTitle()设置标题 和标题图片。
3、 覆盖onContextItemSelected()方法,响应子菜单的单击事件
//响应点击事件:
0 0
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- 菜单
- PHP中的语言结构详解
- 3——Building Microservices: Inter-Process Communication in a Microservices Architecture
- 折线图的绘制
- C++ STL中Map的按Key排序和按Value排序
- 配置集群各机器间免密码登陆(开启ssh互信)
- 菜单
- codeforces 660B. Seating On Bus
- 【NYOJ】[1092]数字分隔(二)
- Android开发学习总结(一)——搭建最新版本的Android开发环境
- 软件开发公司如何带新人?
- A + B Problem
- 【OpenCV】OpenCV3的第五天——imgproc组件之图像处理
- 4——Service Discovery in a Microservices Architecture
- Linux 内核延时函数