18842388900

网站建设 APP开发 小程序

Article/文章

记录成长点滴 分享您我感悟

您当前位置>首页 > 知识 > 网站建设

Android中的详细菜单栏

理解Android的菜单

选项菜单:最常见的菜单,在android中称为选项菜单

子菜单:单击android中的子菜单将弹出浮动窗口以显示子菜单项。子菜单不支持嵌套,也就是说,子菜单中不能包含其他子菜单。

上下文菜单:android长按菜单后视图控件,windows右键单击弹出菜单是上下文菜单

图标菜单:这个比较简单,是带图标的菜单项,需要注意子菜单项、上下文菜单项、扩展菜单项均无法显示图标

替代菜单:使用较少,后来单独介绍,本文首先跳过(事实上,我还没想出来o(≧v≦)o ~~)

扩展菜单:选项菜单最多只能显示6个菜单项。当有超过6个项目时,第6个菜单项将被系统替换为名为“更多”的子菜单。原始菜单项不会显示。

“更多”菜单的子菜单项。如下图所示

2011082121262981.png2011082121245374.png

每个活动都包含一个菜单。菜单可以包含多个菜单项和多个子菜单。子菜单也是一个菜单(因为它实现了菜单界面),因此子菜单也可以包含多个菜单项。 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

}

2011082511574851.png2011082511584464.png2011082512031395.png

上面的代码演示了如何创建一个子菜单,其对菜单项的响应实际上是普通菜单项的响应

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(.)中的上下文菜单项。

2011082715585751.png2011082715591621.png

[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菜单栏详细说明

网站建设,小程序开发,小程序制作,微信小程序开发,公众号开发,微信公众号开发,网页设计,网站优化,网站排名,网站设计,微信小程序设计,小程序定制,微信小程序定制

相关案例查看更多