在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. 分布式缓存之Ehcache与terracotta - Terracotta服务器概念篇

    1.介绍 Terracotta服务器为Terracotta产品提供分布式数据平台.Terracotta服务器集群被称为Terracotta服务器阵列(TSA).Terracotta服务器阵列可以从单个 ...

  2. CM5(5.11.0)和CDH5(5.11.0)离线安装

    概述 文件下载 系统环境搭建 日志查看 Q&A 参考 概述 CDH (Cloudera's Distribution, including Apache Hadoop),是Hadoop众多分支 ...

  3. JavaScript学习笔记(十五)——对象之Date,RegExp

    在学习廖雪峰前辈的JavaScript教程中,遇到了一些需要注意的点,因此作为学习笔记列出来,提醒自己注意! 如果大家有需要,欢迎访问前辈的博客https://www.liaoxuefeng.com/ ...

  4. KNN--用于手写数字识别

    优点:精度高,对异常值不敏感,无数据输入假定 缺点:计算复杂度高,空间复杂度高 适用数据范围:数值型和标称型   一般流程:     (1). 收集数据(网络抓取)     (2).处理数据,将数据处 ...

  5. 【转】Visual Studio Code 使用Git进行版本控制

    原文链接:https://www.cnblogs.com/xuanhun/p/6019038.html?utm_source=tuicool&utm_medium=referral 本来认为此 ...

  6. ESLint 的正式使用感受

    介绍ESLint ESLint 是一个代码规范和错误检查工具,有以下几个特性 所有东西都是可以插拔的.你可以调用任意的rule api或者formatter api 去打包或者定义rule or fo ...

  7. PHP的AES加密类

    PHP的AES加密类 aes.php <?php /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ...

  8. memcache调整value大小限制

    > *事件背景: 当Redis有问题时按预案就会切换到本机memcache,但是我们首页 key:value现 在是1.5M同时memcache item限制是1M,导致首页写入memcache ...

  9. Vux配置指南

    流程 Vux是Vue.js的一个ui库,官网在这里,官方文档的配置指南侧重于技术的罗列,我这里简化一下Vux的配置流程. 1. 安装vux npm install vux --save 2. 安装le ...

  10. 4、libgdx应用框架

    (原文:http://www.libgdx.cn/topic/29/4-libgdx%E5%BA%94%E7%94%A8%E6%A1%86%E6%9E%B6) 模块 作为核心.libgdx提供了六个接 ...