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来制作动画,其次就是利用代 ...
随机推荐
- Vue.js简单的应用
1:一个简单实现 下面代码部分: <body> <div id="myDiv1"> {{userName}} </div> </body& ...
- 这些工具对html5开发有很大帮助
如今H5已经在IT这块很热门,所以也就有越来越多的人自学或是报名培训班学习H5,今天写一篇关于当下html5开发工具有哪些?哪个更好一些? 浅谈2017年html5开发工具哪个好: 1.Adobe D ...
- SQL---索引---创建索引
CREATE INDEX 语句用于在表中创建索引. 在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据. 索引 您可以在表中创建索引,以便更加快速高效地查询数据. 用户无法看到索引,它们只 ...
- 条件随机场 Conditional Random Fields
简介 假设你有冠西哥一天生活中的照片(这些照片是按时间排好序的),然后你很无聊的想给每张照片打标签(Tag),比如这张是冠西哥在吃饭,那张是冠西哥在睡觉,那么你该怎么做呢? 一种方法是不管这些照片的序 ...
- 学习爬虫的day03 (通过代理去爬去数据)
代理的IP通过去网上找# -*- coding: utf-8 -*- import re import _thread from time import sleep, ctime from urlli ...
- 关于如何在微信里面让video不全屏播放
发现一个更简单的解决方法,加上一条属性即可.x5-video-player-type="h5″.通过设置这个属性,让video开启同层H5播放器.另外在X5内核里,video是单独的一个vi ...
- 计算机网络初探(ip协议)
粗读了两遍计算机网络(谢希仁),对于计算计算机网络算是有了一个初步的了解,所以打算写一篇文章(希望是教程)进行巩固(主要围绕IP协议). 局域网 因特网的产生和广泛使用极大地改变了我们的生活,但对于不 ...
- eclipse中将本地项目上传到svn库
转载文章:http://blog.csdn.net/singit/article/details/48972197
- Yahoo网站性能优化的34条军规
1.尽量减少HTTP请求次数 终端用户响应的时间中,有80%用于下载各项内容,这部分时间包括下载页面中的图像.样式表.脚本.Flash等.通过减少页面中的元素可以减少HTTP请求的次数,这是提高网页速 ...
- iOS中常见的锁
多线程的安全隐患 一块资源可能会被多个线程共享,也就是说多个线程可能会访问同一块资源. 比如多个线程同时操作同一个对象,同一个变量. 当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题. 比 ...