线上服务咨询
Android中的详细菜单栏
发表时间:2019-07-30 16:15:34
文章来源:沈阳软件开发
标签:网站建设 小程序开发 小程序制作 微信小程序开发 公众号开发 微信公众号开发 网页设计 网站优化 网站排名 网站设计 微信小程序设计 小程序定制 微信小程序定制
浏览次数:0
理解Android的菜单
选项菜单:最常见的菜单,在android中称为选项菜单
子菜单:单击android中的子菜单将弹出浮动窗口以显示子菜单项。子菜单不支持嵌套,也就是说,子菜单中不能包含其他子菜单。
上下文菜单:android长按菜单后视图控件,windows右键单击弹出菜单是上下文菜单
图标菜单:这个比较简单,是带图标的菜单项,需要注意子菜单项、上下文菜单项、扩展菜单项均无法显示图标。
替代菜单:使用较少,后来单独介绍,本文首先跳过(事实上,我还没想出来o(≧v≦)o ~~)
扩展菜单:选项菜单最多只能显示6个菜单项。当有超过6个项目时,第6个菜单项将被系统替换为名为“更多”的子菜单。原始菜单项不会显示。
“更多”菜单的子菜单项。如下图所示
每个活动都包含一个菜单。菜单可以包含多个菜单项和多个子菜单。子菜单也是一个菜单(因为它实现了菜单界面),因此子菜单也可以包含多个菜单项。 OnCreateOptionsMenu()和OnOptionsMenuSelected()是用于创建菜单项和响应菜单项单击的活动中提供的两种回调方法
1,创建options menu 选项菜单
[java]查看plaincopy
@override
publicbooleanonCreateOptionsMenu(Menumenu){
//与未来版本兼容
super.onCreateOptionsMenu(菜单);
//以多种方式添加菜单项
//menu.add('menu item 1'); //1,直接指定标题,我不知道如何调用此响应
//menu.add(R.string.menuitem2);//2,按资源指定标题
Menu.add(1,Menu.FIRST,1,'menu item 1'); //3,明确指定菜单项的组号,ID,排序,标题
Menu.add(1,Menu.FIRST + 1,2,'菜单项2');
Menu.add(2,Menu.FIRST + 2,3,'菜单项3');
Menu.add(2,Menu.FIRST + 3,4,'菜单项4');
Menu.add(2,Menu.FIRST + 4,5,'菜单项5');
Menu.add(2,Menu.FIRST + 5,6,'菜单项6'); //超过6将被系统中的更多单词替换
Menu.add(2,Menu.FIRST + 6,7,'菜单项7');
Menu.add(2,Menu.FIRST + 7,8,'菜单项8');
[java]查看plaincopy
Returntrue; //如果你想要真正的菜单,返回true
响应菜单项
最常用的方法是覆盖活动类的onOptionsItemSelected(MenuItem)回调方法。每当单击一个菜单项时,android将调用该方法并传入单击的菜单项。
以下代码可用作使用onOptionsItemSelected方法响应菜单的模板。为方便起见,菜单ID在程序中硬编码。您可以使用常量或资源ID来使代码更健壮
[java]查看plaincopy
@override
publicbooleanonOptionsItemSelected(MenuItemitem){
开关(item.getItemId()){
案例1:
//DoSomething的
Toast.makeText(this,'1',Toast.LENGTH_LONG).show();
打破;
案例2:
Toast.makeText(this,'2',Toast.LENGTH_LONG).show();
打破;
案例3:
Toast.makeText(this,'3',Toast.LENGTH_LONG).show();
打破;
案例4:
Toast.makeText(this,'4',Toast.LENGTH_LONG).show();
打破;
默认值:
returnsuper.onOptionsItemSelected(项目);
}
Returntrue;
}
使用监听器响应菜单项
虽然上面的方法是推荐的方法,但android仍然提供了一种类似于swing的侦听器方式来响应菜单。使用侦听器的方法分为两步:
[java]查看plaincopy
//步骤1:为菜单项
注册监听器menuItem.setOnMenuItemClickListener(newMyMenuItemClickListener());
//第2步:创建一个监听器类
classMyMenuItemClickListenerimplementsOnMenuItemClickListener {
@override
publicbooleanonMenuItemClick(MenuItemitem){
开关(){
//dosomethinghere .
}
Returntrue; //finishhandling
}
}
此方法在onOptionsItemSelected执行之前。
[java]查看plaincopy
2,子菜单Sub Menu
Android支持子菜单,您可以通过addSubMenu(intgroupId,intitemId,intorder,inttitleRes)方法轻松创建和响应子菜单。[java]查看plaincopy
@override
publicbooleanonCreateOptionsMenu(Menumenu){
//与未来版本兼容
super.onCreateOptionsMenu(菜单);
//添加子菜单
//菜单可以有多个子菜单
menu.addSubMenu(1,Menu.FIRST,1,'系统设置');
SubMenusubMenu=menu.addSubMenu(1,Menu.FIRST + 1,2,'网络设置'); //子菜单支持图标
subMenu.setIcon(R.drawable.ic_launcher);
MenuItemmenuItem=subMenu.add(2,Menu.FIRST + 2,Menu.NONE,'menu item 1'); //子菜单项不支持显示图标
//menuItem.setIcon(R.drawable.ic_launcher);
subMenu.add(2,Menu.FIRST + 3,Menu.NONE,'menu item 2');
subMenu.add(2,Menu.FIRST + 4,Menu.NONE,'menu item 3');
subMenu.add(2,Menu.FIRST + 5,Menu.NONE,'menu item 4');
Returntrue; //如果你想要真正的菜单,返回true
}
上面的代码演示了如何创建一个子菜单,其对菜单项的响应实际上是普通菜单项的响应
3,图标菜单Icon Menu
Android支持在菜单上显示各种图标,我们在创建
上面的子菜单时已经使用过这些图标[java]查看plaincopy
SubMenusubMenu=menu.addSubMenu(1,Menu.FIRST + 1,2,'网络设置'); //子菜单支持图标
subMenu.setIcon(R.drawable.ic_launcher);
Android并不意味着菜单项可以添加图标。不允许使用以下菜单项(这并不意味着程序将报告错误,但不会显示运行时图标):
扩展菜单项。
子菜单的菜单项
上下文菜单的菜单项
4,ContextMenu简介
在Windows中,我们习惯右键单击文件以执行“打开”,“重命名”,“剪切”,“删除”等操作。右键单击菜单是上下文菜单。
Android是通过长按视图元素来弹出上下文菜单。
上下文菜单和“选项”菜单之间的最大区别在于“选项”菜单的所有者是“活动”,上下文菜单的所有者是“活动”中的“视图”。每个活动都有一个且只有一个选项菜单,它为整个活动提供服务。并且一个Activity通常有多个Views,而不是每个View都有一个上下文菜单,这需要我们通过
显示registerForContextMenu(Viewview)指定。
这是一个演示如何创建和响应上下文菜单的演示:
1.在活动的onCreate(.)方法
中注册视图的上下文菜单2.在onCreateContextMenuInfo(.)中生成上下文菜单。
3.响应onContextItemSelected(.)中的上下文菜单项。
[java]查看plaincopy
publicclassMenuDemoActivityextendsActivity {
privateListViewlistView;
@override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.main);
initView(); //做一些初始化工作
}
privatevoidinitView(){
的ListView=(ListView中)this.findViewById(R.id.listview);
listView.setAdapter(newMyAdapter());
this.registerForContextMenu(listView); //1为所有列表项注册上下文菜单,与响应事件不同
}
//向ListView提供一些数据
privateclassMyAdapterextendsBaseAdapter {
publicintgetCount(){
Return5;
}
publicObjectgetItem(intposition){
//TODOAuto-generatedmethodstub
Returnnull;
}
publiclonggetItemId(intposition){
//TODOAuto-generatedmethodstub
Return0;
}
publicViewgetView(intposition,ViewconvertView,ViewGroupparent){
TextViewtv=newTextView(MenuDemoActivity.this);
tv.setText( '文件' +位);
Returntv;
}
}
@override
//2C创建一个上下文菜单
publicvoidonCreateContextMenu(ContextMenumenu,Viewv,
ContextMenuInfomenuInfo){
super.onCreateContextMenu(菜单,V,menuInfo);
menu.setHeaderTitle('file operation');
Menu.add(1,Menu.FIRST,Menu.NONE,'send');
Menu.add(1,Menu.FIRST + 1,Menu.NONE,'标记为重要');
Menu.add(1,Menu.FIRST + 2,Menu.NONE,'Rename');
Menu.add(1,Menu.FIRST + 3,Menu.NONE,'delete');
}
@override
//3响应上下文菜单
publicbooleanonContextItemSelected(MenuItemitem){
开关(item.getItemId()){
案例1:
Toast.makeText(this,'send',1).show();
打破;
案例2:
Toast.makeText(这个,'标记为重要',1).show();
打破;
案例3:
Toast.makeText(this,'rename',1).show();
打破;
案例4:
Toast.makeText(this,'delete',1).show();
打破;
默认值:
returnsuper.onContextItemSelected(项目);
}
Returntrue;
}
}
运行程序,多次调用上下文菜单,注意LogCat的输出,每次都调用onCreateContextMenu。
标签:& nbsp& nbsp沈阳app开发&营销类型网站建设& nbsp沈阳App设计& nbspAndroid菜单栏详细说明网站建设,小程序开发,小程序制作,微信小程序开发,公众号开发,微信公众号开发,网页设计,网站优化,网站排名,网站设计,微信小程序设计,小程序定制,微信小程序定制