xamarin android menu的用法
在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的用法的更多相关文章
- xamarin android viewpager的用法
1.什么是ViewPager 通过手势滑动可以完成view的切换,一般是用来app的引导页或则实现图片轮播,类似网页上的banner轮播. Adnroid 3.0后引入的一个UI控件,在xamarin ...
- xamarin android listview的用法
listview也许是用的非常频繁的一个控件之一,下面我写一个xamarin的listview栗子,大家尝一尝xamarin android开发的乐趣.原谅我的大小写吧. listview绑定自定义的 ...
- [置顶]
Xamarin android 调用Web Api(ListView使用远程数据)
xamarin android如何调用sqlserver 数据库呢(或者其他的),很多新手都会有这个疑问.xamarin android调用远程数据主要有两种方式: 在Android中保存数据或调用数 ...
- xamarin android alertdialog详解
说明一下:学习xamarin android一段时间,准备写一些xamarin android相关的例子,alertdialog也是使用的非常多得空间之一,非常感谢鸟巢上的小猪,我也是看着他写的教程学 ...
- 我正在使用Xamarin的跨平台框架—Xamarin.Android回忆录
一.缘起 在自己给别家公司做兼职外包的时候,已经明确知道外包的活不是那么好干的,一般在经历了初期热血澎湃的激情后,逐渐冷淡,愤怒,再冷淡,再愤怒…,听上去好像高潮迭起,但令人尴尬的是,这高潮迭起我们都 ...
- Xamarin.Android之简单的抽屉布局
0x01 前言 相信对于用过Android版QQ的,应该都不会陌生它那个向右滑动的菜单(虽说我用的是Lumia) 今天就用Xamarin.Android实现个比较简单的抽屉布局.下面直接进正题. 0x ...
- 跨过几个坑,终于完成了我的第一个Xamarin Android App!
时间过得真快,距离上次发随笔又是一年多.作为上次发的我的第一个WP8.1应用总结的后继,这次同样的主要功能,改为实现安卓版APP.前几个月巨硬收购Xamarin,把Xamarin集成到VS里了,大大方 ...
- Xamarin.Android中使用ResideMenu实现侧滑菜单
上次使用Xamarin.Android实现了一个比较常用的功能PullToRefresh,详情见:Xamarin. Android实现下拉刷新功能 这次将实现另外一个手机App中比较常用的功能:侧滑菜 ...
- Xamarin.Android之动画
Translate动画 这个动画是最常使用到的,主要就是将控件从一个位置移动到另一个位置,并且还可以在这其中增加一定的效果,下面我们将采用两种方式实现动画,首选的是利用XML来制作动画,其次就是利用代 ...
随机推荐
- 对于String 与StringBuffer 和StringBuilder的总结
StringBuffer 1,线程安全的可变字符序列.一个类似于 String 的字符串缓冲区,但不能修改 2,虽然在任意时间点上它都包含某种特定的字符序列,但通过某些方法调用可以改变该序列的长度 ...
- Geth控制台使用及Web3.js使用实战
在开发以太坊去中心化应用,免不了和以太坊进行交互,那就离不开Web3. Geth 控制台(REPL)实现了所有的web3 API及Admin API, 使用好 Geth 就是必修课.结合Geth命令用 ...
- 推荐一款基于bootstrap的漂亮的前端模板—inspinia_admin
首先给出Demo网址:http://cn.inspinia.cn inspinia admin 最新版 bootstrap 完全响应式后台管理模板,采用扁平化设计.使用Bootstrap 3+ Fra ...
- JavaScript练习网站收集
在学习的过程中会发现很多知识点如果不在工作中运用或者手写带验证的话,很容易忘记.任何技能的掌握都是需要不断练习的.在此收集一些自己遇到的JavaScript练习的网站. codewars 国外的一个练 ...
- RGBA 和 opacity的区别
两者都可以设置透明度 区别 RGBA 只影响当前元素 opacity 后代会继承该css 值,暂时还没有办法清除该css 在线演示
- mysql如何查看索引使用情况以及优化 - guols0612
mysql中支持hash和btree索引.innodb和myisam只支持btree索引,而memory和heap存储引擎可以支持hash和btree索引 我们可以通过下面语句查询当前索引使用情况: ...
- codeforge免费下载账号 积分账号 共享账号
codeforge网站下载代码很好,没有积分怎么办?那么多好的matlab代码,matlab程序,C,JAVA等等,都要充值啊!!! 请用下面共享的codeforge账号密码========> ...
- Spring Cloud Zuul 添加 ZuulFilter
紧接着上篇随笔Spring Cloud Zuul写,添加过滤器,进行权限验证 1.添加过滤器 package com.dzpykj.filter; import java.io.IOException ...
- Angular之指令Directive系列
项目筹备近期开启Angular学习,指令比较难理解所以记录备案,推荐Angualr实战学习视频大漠穷秋 Angular实战 一.指令directive概述 指令可以对元素绑定事件监听或者改变DOM结构 ...
- Effective Java 第三版——1. 考虑使用静态工厂方法替代构造方法
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...