在Android中的菜单有如下几种:

  • OptionMenu:选项菜单,android中最常见的菜单,通过Menu键来调用
  • SubMenu:子菜单,android中点击子菜单将弹出一个显示子菜单项的悬浮框,子菜单不支持嵌套,即不能包括其他子菜单
  • ContextMenu:上下文菜单,通过长按某个视图组件后出现的菜单,该组件需注册上下文菜单本。

如何使用OptionMenu:

答:非常简单,重写两个方法就好,其实这两个方法我们在创建项目的时候就会自动生成~他们分别是:

  • public boolean onCreateOptionsMenu(Menu menu):调用OptionMenu,在这里完成菜单初始化
  • public boolean onOptionsItemSelected(MenuItem item):菜单项被选中时触发,这里完成事件处理

当然除了上面这两个方法我们可以重写外我们还可以重写这三个方法:

  • public void onOptionsMenuClosed(Menu menu):菜单关闭会调用该方法
  • public boolean onPrepareOptionsMenu(Menu menu):选项菜单显示前会调用该方法,可在这里进行菜单的调整(动态加载菜单列表)
  • public boolean onMenuOpened(int featureId, Menu menu):选项菜单打开以后会调用这个方法

而加载菜单的方式有两种,一种是直接通过编写菜单XML文件,然后调用:getMenuInflater().inflate(R.menu.menu_main, menu);加载菜单或者通过代码动态添加,onCreateOptionsMenu的参数IMenu menu接口的对象,调用menu的扩张 Add方法添加菜单,Add(this IMenu self,菜单项的组号,ID,排序号,标题),另外如果排序号是按添加顺序排序的话都填0即可!

这是我看菜鸟上小猪的教程,借鉴一下。不过刚开始做这个menu也是坑,他那个是继承AppCompatActivity的,搞一半天发现非常不对经。所以.......

看一下效果图:

在代码中加载菜单,两个重写方法的代码:

   public override bool OnCreateOptionsMenu(IMenu menu)
{
menu.Add(1, 1, 0, "杜兰特");
menu.Add(1, 2, 0, "库里");
menu.Add(1, 3, 0, "汤普森");
menu.Add(2,1,4, "科比");
menu.Add(2, 1, 0, "张木木"); // menu.SetGroupCheckable(0, true, false);//设置单选和多选的
// menu.SetGroupCheckable(2, true, true);
return base.OnCreateOptionsMenu(menu);
}
public override bool OnOptionsItemSelected(IMenuItem item)
{
int id = item.ItemId;
switch (id)
{
case 0:
Toast.MakeText(this, "你选择的是第" + item.TitleFormatted + "项", ToastLength.Short).Show();
break;
case 1:
Toast.MakeText(this, "你选择的是第" + item.TitleFormatted + "项", ToastLength.Short).Show();
break;
case 2:
Toast.MakeText(this, "你选择的是第" + item.TitleFormatted + "项", ToastLength.Short).Show();
break;
case 3:
Toast.MakeText(this, "你选择的是第" + item.TitleFormatted+ "项", ToastLength.Short).Show();
break;
}
return true;
}

另外注意一点,这五个重新方法的参数都是接口 IMenu ,关于c# 接口作为方法的参数,应该要知道:

接口做为参数传递,传递的是实现了接口的对象;

接口作为类型返回,返回的是实现了接口的对象。

另外一种在xml文件中加载菜单,一般的在Resource下建一个Menu文件夹,里面新建一些menu的xml文件比较好

<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<!--定位-->
<item
android:id="@+id/action_position"
android:orderInCategory="100"
android:showAsAction="never"
android:title="定位"/> <!--升级-->
<item
android:id="@+id/action_update"
android:orderInCategory="100"
android:showAsAction="never"
android:title="升级"/>
<!--下班退出-->
<item
android:id="@+id/action_logout"
android:orderInCategory="100"
android:showAsAction="never"
android:title="下班退出"/> <!--关于我们-->
<item
android:id="@+id/action_about"
android:orderInCategory="100"
android:showAsAction="never"
android:title="关于我们"/> </menu>

重新的方法:

  public override bool OnCreateOptionsMenu(IMenu menu)
{ MenuInflater.Inflate(Resource.Menu.menu_test, menu);
return base.OnCreateOptionsMenu(menu);
}
public override bool OnOptionsItemSelected(IMenuItem item)
{ switch (item.ItemId)
{
case Resource.Id.action_about:
Toast.MakeText(this, "你选择的是第" + item.TitleFormatted + "项", ToastLength.Short).Show();
break;
case Resource.Id.update:
<pre name="code" class="html"> Toast.MakeText(this, "你选择的是第" + item.TitleFormatted + "项", ToastLength.Short).Show();
break; case Resource.Id.logout: Toast.MakeText(this, "你选择的是第" + item.TitleFormatted + "项", ToastLength.Short).Show(); break; case Resource.Id.about: Toast.MakeText(this, "你选择的是第" + item.TitleFormatted+ "项", ToastLength.Short).Show(); break; } return true; }
												

xamarin android menu的用法的更多相关文章

  1. xamarin android viewpager的用法

    1.什么是ViewPager 通过手势滑动可以完成view的切换,一般是用来app的引导页或则实现图片轮播,类似网页上的banner轮播. Adnroid 3.0后引入的一个UI控件,在xamarin ...

  2. xamarin android listview的用法

    listview也许是用的非常频繁的一个控件之一,下面我写一个xamarin的listview栗子,大家尝一尝xamarin android开发的乐趣.原谅我的大小写吧. listview绑定自定义的 ...

  3. [置顶] Xamarin android 调用Web Api(ListView使用远程数据)

    xamarin android如何调用sqlserver 数据库呢(或者其他的),很多新手都会有这个疑问.xamarin android调用远程数据主要有两种方式: 在Android中保存数据或调用数 ...

  4. xamarin android alertdialog详解

    说明一下:学习xamarin android一段时间,准备写一些xamarin android相关的例子,alertdialog也是使用的非常多得空间之一,非常感谢鸟巢上的小猪,我也是看着他写的教程学 ...

  5. 我正在使用Xamarin的跨平台框架—Xamarin.Android回忆录

    一.缘起 在自己给别家公司做兼职外包的时候,已经明确知道外包的活不是那么好干的,一般在经历了初期热血澎湃的激情后,逐渐冷淡,愤怒,再冷淡,再愤怒…,听上去好像高潮迭起,但令人尴尬的是,这高潮迭起我们都 ...

  6. Xamarin.Android之简单的抽屉布局

    0x01 前言 相信对于用过Android版QQ的,应该都不会陌生它那个向右滑动的菜单(虽说我用的是Lumia) 今天就用Xamarin.Android实现个比较简单的抽屉布局.下面直接进正题. 0x ...

  7. 跨过几个坑,终于完成了我的第一个Xamarin Android App!

    时间过得真快,距离上次发随笔又是一年多.作为上次发的我的第一个WP8.1应用总结的后继,这次同样的主要功能,改为实现安卓版APP.前几个月巨硬收购Xamarin,把Xamarin集成到VS里了,大大方 ...

  8. Xamarin.Android中使用ResideMenu实现侧滑菜单

    上次使用Xamarin.Android实现了一个比较常用的功能PullToRefresh,详情见:Xamarin. Android实现下拉刷新功能 这次将实现另外一个手机App中比较常用的功能:侧滑菜 ...

  9. Xamarin.Android之动画

    Translate动画 这个动画是最常使用到的,主要就是将控件从一个位置移动到另一个位置,并且还可以在这其中增加一定的效果,下面我们将采用两种方式实现动画,首选的是利用XML来制作动画,其次就是利用代 ...

随机推荐

  1. 开始你的第一个npm脚本工具

    在实际开发中,一般刚开始一个项目或者刚接手一个项目,我们会运行 npm install 下载安装所有依赖, 在实际开发中,可能也会使用各种命令行-- 来提高我们开发的效率. 与它相处了这么久,你真的了 ...

  2. Anaconda 安装 Python 库(MySQLdb)的方法

    [已解决]Anaconda 安装 Python 库(MySQLdb)的方法 zoerywzhou@163.com http://www.cnblogs.com/swje/ 作者:Zhouwan 201 ...

  3. SaltStack 架构自动部署 03

    架构图 模块化部署 系统模块:系统优化,内核参数,网络参数 功能模块:如:nginx,tomcat, 业务模块: 1.在salt-master端修改配置文件 [root@01 salt]# vim / ...

  4. MyEclipse Java基础使用笔记

    一.Java开发平台 JavaSE  标准版 Java应用程序 application  五子棋.计算器.qq JavaEE  企业版  Java企业级应用 JavaME 微型版  小型设备    A ...

  5. heartbeat+DRBD 高可用 双机热备

    heartbeat+DRBD 高可用 双机热备 原创博文http://www.cnblogs.com/elvi/p/7658109.html ## heartbeat+DRBD 高可用 双机热备 # ...

  6. django1.11如何实时访问mysql数据库

    前几天,一直在研究django框架,发现它自身封装了很多有用的API,很有意思.比如,数据库操作基本的创表,查询,插值,更新,删除都有,很方便,再加上json库可以直接将数据json化,通过服务器传给 ...

  7. C#的数据类型总结(2):decimal ,double,float的区别

    1> 三者是精度不同的浮点数,如下图 参见:https://docs.microsoft.com/zh-cn/dotnet/articles/csharp/language-reference/ ...

  8. Golang学习--包管理工具glide

    上一篇文章中我们已经成功的运行了go的代码,这是我们迈出的最基础的一步. 一个项目通常会依赖很多外部的库,当依赖的库比较多的时候,手工管理就会比较麻烦,这个时候就需要包管理工具出场了,帮你管理好所有依 ...

  9. python之 json里字典中的value去重

    import simplejson as json with open(r'C:\Users\Desktop\test.txt', 'r' ) as f1, open(r'C:\Users\Deskt ...

  10. Selenium中如何使用xpath更快定位

    在学习Selenium路上,踩了也不少坑,这是我最近才发现的一个新写法,好吧,"才发现"又说明我做其他事了.对的,我现在还在加班! 开车~~~ 例子:知乎网 标签:Python3. ...