android menu 开发
menu 分类:
首先说 选项菜单(OptionsMenu)
一、方法介绍:
public booleanonCreateOptionsMenu(Menu menu):使用此方法调用OptionsMenu 。
public booleanonOptionsItemSelected(MenuItem item):选中菜单项后发生的动作。
public voidonOptionsMenuClosed(Menu menu):菜单关闭后发生的动作。
public booleanonPrepareOptionsMenu(Menu menu):选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。
public booleanonMenuOpened(int featureId, Menu menu):单打开后发生的动作。
二、默认样式
默认样式是在屏幕底部弹出一个菜单,这个菜单我们就叫他选项菜单OptionsMenu,一般情况下,选项菜单最多显示2排每排3个菜单项,这些菜单项有文字有图标,也被称作Icon
Menus,如果多于6项,从第六项开始会被隐藏,在第六项会出现一个More里,点击More才出现第六项以及以后的菜单项,这些菜单项也被称作Expanded
Menus。下面介绍。
1.重载onCreateOptionsMenu(Menu menu)方法
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
//getMenuInflater().inflate(R.menu.main, menu);
menu.add(0,1,1,"设置").setIcon(R.drawable.setting);
menu.add(0,3,3,"设置").setIcon(R.drawable.setting);
menu.add(0,2,2,"下载").setIcon(R.drawable.download); }
重载onCreateOptionsMenu(Menu menu)方法,并在此方法中添加菜单项,最后返回true,如果false,菜单则不会显示。
注意:
4.2上的optionsMenu是放到actionbar上面了,必须要在xml文件中设置showAsAction="always"活着showAsAction="ifRoom"才能在actionbar上显示。只有在actionBar上显示的菜单,才会有图标。要在代码中设置的话,menu.findItem(id).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS)
2.重载onOptionsItemSelected(MenuItem item)方法为捕捉菜单项事件
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// TODO Auto-generated method stub
if (item.getGroupId() == 0 &&item.getItemId() == 1)
{
Intent intent = new Intent(this, SecondActivity.class);
startActivity(intent);
}
else
{
Toast.makeText(this, item.getTitle(), Toast.LENGTH_SHORT).show();
}
return super.onOptionsItemSelected(item);
}
当用户长按一个控件时时,弹出的菜单我们称为上下文菜单。我们经常在Windows中用鼠标右键单击弹出的菜单就是上下文菜单。
1、重载Activity的onCreateContextMenu()方法,调用Menu的add方法添加菜单项MenuItem
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo)
{
menu.add(0, 1, 0, "红色背景");
menu.add(0, 2, 0, "绿色背景");
menu.add(1, 3, 0, "白色背景");
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
}
2、重载onContextItemSelected()方法,响应菜单单击事件
@Override
public boolean onContextItemSelected(MenuItem item)
{
// TODO Auto-generated method stub
switch(item.getItemId()) {
case 1:
myText.setBackgroundColor(Color.RED);
break;
case 2:
myText.setBackgroundColor(Color.GREEN);
break;
case 3:
myText.setBackgroundColor(Color.WHITE);
break;
}
return true;
}
3、重载registerForContextMenu()方法,为视图注册上下文菜单
private TextView myText;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myText = (TextView)findViewById(R.id.mytext);
registerForContextMenu(myText);
}
子菜单(SubMenu)
子菜单就是将相同功能的分组进行多级显示的一种菜单,比如,Windows的“文件”菜单中就有“新建”,“打开”,“关闭”等子菜单。
创建子菜单的方法
1、重载Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法添加子菜单项
2、调用SubMenu的add()饭饭,添加子菜单项
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present. SubMenu subMenu = menu.addSubMenu(0, 4, 4, "登录/注册");
subMenu.add(1, 1, 1, "登录");
subMenu.add(1, 2, 2, "注册");
return true;
}
3、重载onOptionsItemSelected(MenuItem item)方法为捕捉菜单项事件
这个方法有一个MenuItem参数,可以使用其getTitle和getItemId方法来判断单击的是哪个菜单项
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
if(item.getTitle().equals("登录"))
{
Log.e("action:","点击了 注册/登录");
}
return super.onOptionsItemSelected(item);
}
SubMenu是Menu的子接口,添加SubMenu后,可以通过SubMenu.add方法添加其子菜单项。在子菜单项上不能显示图像,但可以在子菜单的头部显示图像,不过子菜单项可以带复选框和选项按钮。
注意:子菜单不能再增加子菜单;
弹出菜单(Popup)
该类菜单需要和某个View绑定,当点击该View时在该View的上面或下面(视屏幕空间而定)弹出菜单。
popup.xml
<menu xmlns:android="http://schemas.android.com/apk/res/android" > <item
android:id="@+id/action_edit"
android:orderInCategory="100"
android:showAsAction="never"
android:title="edit"/>
<item
android:id="@+id/action_share"
android:orderInCategory="100"
android:showAsAction="never"
android:title="popup"/> </menu>
public void showPopuMenu(View v)
{
PopupMenu popup = new PopupMenu(MainActivity.this, v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.popup, popup.getMenu());
popup.show(); }
demo:http://download.csdn.net/detail/q610098308/9236383
android menu 开发的更多相关文章
- android的开发 华为手机上不显示menu键
android的开发,华为手机上不显示menu键解决办法: 在AndroidManifest.xml中讲targetSdkVersion改为9. <uses-sdk android:minSdk ...
- Android UI开发第二十九篇——Android中五种常用的menu(菜单)
Android Menu在手机的应用中起着导航的作用,作者总结了5种常用的Menu. 1.左右推出的Menu 前段时间比较流行,我最早是在海豚浏览器中看到的,当时耳目一新.最早使用左右推出菜单的,听说 ...
- 《Android NFC 开发实战详解 》简介+源码+样章+勘误ING
<Android NFC 开发实战详解>简介+源码+样章+勘误ING SkySeraph Mar. 14th 2014 Email:skyseraph00@163.com 更多精彩请直接 ...
- Android NDK开发Hello Word!
在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力.这里我们选择使用C+JAVA开发Android ...
- 【Android 系统开发】CyanogenMod 13.0 源码下载 编译 ROM 制作 ( 手机平台 : 小米4 | 编译平台 : Ubuntu 14.04 LTS 虚拟机)
分类: Android 系统开发(5) 作者同类文章X 版权声明:本文为博主原创文章 ...
- 【Android 应用开发】GitHub 优秀的 Android 开源项目
原文地址为http://www.trinea.cn/android/android-open-source-projects-view/,作者Trinea 主要介绍那些不错个性化的View,包括Lis ...
- Android ROM开发(一)——Windows下Cygwin和Android_Kitchen厨房的安装
Android ROM开发(一)--Windows下Cygwin和Android_Kitchen厨房的安装 很久没有碰到ROM开发了,在很久很久以前也是从ROM起步的,无奈还是一脚踏上了Android ...
- 《Android Studio开发实战 从零基础到App上线》资源下载和内容勘误
转载于:https://blog.csdn.net/aqi00/article/details/73065392 资源下载 下面是<Android Studio开发实战 从零基础到App上线&g ...
- Android Studio开发-高效插件强烈推荐
Android Studio开发-高效插件强烈推荐 现在Android的开发者基本上都使用Android Studio进行开发(如果你还在使用eclipse那也行,毕竟你乐意怎么样都行).使用好And ...
随机推荐
- FileReader 基本介绍
转自:http://blog.csdn.net/zk437092645/article/details/8745647 用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步 ...
- innodb数据库批量转换表引擎为MyISAM
2013.0106 innodb数据库批量转换表引擎为MyISAM 来源:本站原创 PHP, 数据库, 系统技术 超过488名童鞋围观 1条评论 <?php //连接数据库 $host='lo ...
- MS CRM 2011的自定义和开发(11)——插件(plugin)开发(一)
http://www.cnblogs.com/StoneGarden/archive/2012/02/02/2336147.html MS CRM 2011的自定义和开发(11)——插件(plugin ...
- OC—设计模式-通知的使用
通知 通知(广播) 可以一对多的发送通知(一个发送者 多个观察者) 特别注意:在发送者 发送通知的时候,必须有观察者 发送者,就是注册一个通知中心,以他为中心,发送消息 通过通知的名字,来判断是哪个通 ...
- Winform/WPF国际化处理
1.Winfrom国际化处理方式 ==> Winform中国际化支持可将UI页面和.cs文件分开处理 处理窗体方式如下:1.选择Form窗体设置其--Language(默认中文--Default ...
- 【log】logback.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 控制台 - ...
- SVN设置实例
D:\scmserver\SVNROOT\safeControl,该SVN项目下,有erSystem和hcSystem两个项目.现在人员有两种类型的人,一个内部人员,一个是佰钧成人员. 设置要求: 1 ...
- [svn]svn merge
转:http://blog.csdn.net/keda8997110/article/details/21813035 Step by Step 完成merge 目录: Branch的必要性 1.本地 ...
- ADF_General JSF系列1_创建一个简单的JSF Application
2015-02-17 Creatd By BaoXinjian
- sql异常
表结构 Id int UncheckedTitle nvarchar(50) CheckedValue nvarchar(1000) CheckedRemark nvarchar(1000) Chec ...