菜单栏

更新时间:2023-03-15 19:56:16 阅读: 评论:0

玄策出装-露娜月下无限连

菜单栏
2023年3月15日发(作者:闪屏)

Android三种菜单(Menu)的实现

⼀、常⽤⽅法

javaonCreateOptionsMenu(Menumenu)

每次Activity⼀创建就会执⾏,⼀般只执⾏⼀次,创建并保留Menu的实例;

//获取MenuInflater

MenuInflaterinflater=getMenuInflater();

//加载Menu资源

e(_menu_normal,menu);

//此⽅法必须返回true,否则不予显⽰

returntrue;

javaonPrepareOptionsMenu(Menumenu)

每次menu被打开时,该⽅法就会执⾏⼀次,可⽤于对传⼊的旧Menu对象进⾏修改操作;

javaonOptionsItemSelected(MenuItemitem)

每次menu菜单项被点击时,该⽅法就会执⾏⼀次;

@Override

publicbooleanonOptionsItemSelected(MenuItemitem){

switch(mId()){

_normal_1:

returntrue;//返回true,将结束点击事件,不会进⼊下⼀级菜单

_normal_2:

returntrue;

_normal_3:

returntrue;

_normal_4:

returntrue;

default:

onsItemSelected(item);//不返回true,避免截断菜单项的点击事件

}

}

javainvalidateOptionsMenu()

刷新menu⾥的选项⾥内容,它会调⽤onCreateOptionsMenu(Menumenu)⽅法

javaonCreateContextMenu()

创建控件绑定的上下⽂菜单menu,根据⽅法⾥的View参数识别是哪个控件绑定

javaonContextItemSelected(MenuItemitem)

点击控件绑定的上下菜单menu的内容项

javainvalidateOptionsMenu()

通知系统刷新Menu,之后,onPrepareOptionsMenu会被调⽤

⼆、使⽤XML定义Menu

理论上⽽⾔,使⽤XML和Java代码都可以创建Menu。但是在实际开发中,往往通过XML⽂件定义Menu,这样做有以下⼏个好处:

使⽤XML可以获得更清晰的菜单结构

将菜单内容与应⽤的逻辑代码分离

可以使⽤应⽤资源框架,为不同的平台版本、屏幕尺⼨创建最合适的菜单(如对drawable、string等系统资源的使⽤)

要定义Menu,我们⾸先需要在res⽂件夹下新建menu⽂件夹,它将⽤于存储与Menu相关的所有XML⽂件。

我们可以使⽤

、、三种XML元素定义Menu,下⾯简单介绍⼀下它们:

是菜单项的容器。

元素必须是该⽂件的根节点,并且能够包含⼀个或多个和元素。

是菜单项

⽤于定义MenuItem,可以嵌套元素,以便创建⼦菜单。

是元素的不可见容器(可选)。

可以使⽤它对菜单项进⾏分组,使⼀组菜单项共享可⽤性和可见性等属性。

其中,是我们主要需要关注的元素,它的常见属性如下:

android:id:菜单项(MenuItem)的唯⼀标识

android:icon:菜单项的图标(可选)

android:title:菜单项的标题(必选)

android:showAsAction:指定菜单项的显⽰⽅式。常⽤的有ifRoom、never、always、withText,多个属性值之间可以使⽤|隔开

名称效果

在碎⽚中调⽤菜单时,要在Fragment的onCreate()⽅法中调⽤tHasOptionsMenu(true)

⽅法使之显⽰出来。

三、三种菜单类型

1、选项菜单

选项菜单是⼀个应⽤的主菜单项,⽤于放置对应⽤产⽣全局影响的操作,如搜索/设置

包含多级⼦项的XML代码,通过onOptionsItemSelected(MenuItemitem)返回值为true来截断

//包含多级⼦项的XML代码

xmlns:app="/apk/res-auto">

android:title="⽂件"

app:showAsAction="ifRoom">

android:title="新建"/>

android:title="保存"/>

android:title="更多">

android:title="更多1"/>

android:title="更多2"/>

android:title="更多更多">

android:title="更多更多1"/>

android:title="更多更多2"/>

//Java代码

@Override

publicbooleanonCreateOptionsMenu(Menumenu){

MenuInflaterinflater=getMenuInflater();

e(_menu_normal,menu);

returntrue;

}

@Override

publicbooleanonOptionsItemSelected(MenuItemitem){

switch(mId()){

_normal_1:

returntrue;

_normal_2:

returntrue;

_normal_3:

returntrue;

_normal_4:

returntrue;

default:

onsItemSelected(item);

}

}

2、上下⽂菜单

上下⽂菜单是⽤户长按某⼀元素时出现的浮动菜单。它提供的操作将影响所选内容,主要应⽤于列表中的每⼀项元素(如长按列表项弹出删除对话框)。上下⽂操作模式将在屏幕

顶部栏(菜单栏)显⽰影响所选内容的操作选项,并允许⽤户选择多项,⼀般⽤于对列表类型的数据进⾏批量操作。

要提供浮动上下⽂菜单,可以参照以下步骤:

在Activity或Fragment中调⽤registerForContextMenu(Viewv)

⽅法,注册需要和上下⽂菜单关联的View。如果将ListView或GridView作为参数传⼊,那么每个列表项将会有相同的浮动上下⽂菜单。

always菜单项永远不会被收纳到溢出菜单中,因此在菜单项过多的情况下可能超出菜单栏的显⽰范围。

ifRoom在空间⾜够时,菜单项会显⽰在菜单栏中,否则收纳⼊溢出菜单中。

withText⽆论菜单项是否定义了icon属性,都只会显⽰它的标题,⽽不会显⽰图标。使⽤这种⽅式的菜单项默认会被收纳⼊溢出菜单中。

never菜单项永远只会出现在溢出菜单中。

在Activity或Fragment中重写onCreateContextMenu⽅法,加载Menu资源。

在Activity或Fragment中重写onContextItemSelected⽅法,实现菜单项的点击逻辑。

3、弹出菜单(不需要onCreateOptionsMenu⽅法)

弹出菜单以垂直列表形式显⽰⼀系列操作选项,⼀般由某⼀控件触发,弹出菜单将显⽰在对应控件的上⽅或下⽅。它适⽤于提供与特定内容相关的⼤量操作。

可以将弹出菜单的使⽤拆分为以下四个步骤:

实例化PopupMenu,它的构造⽅法需要两个参数,分别为Context以及PopupMenu依赖的View对象。

使⽤MenuInflater将Menu资源加载到u()返回的Menu对象中。

调⽤tOnMenuItemClickListener⽅法为PopupMenu设置点击监听器。

调⽤()将弹出菜单显⽰出来。

//XML⽂件代码

android:title="添加"/>

android:title="删除"/>

android:title="更多"/>

//Java⽂件代码

@Override

protectedvoidonCreate(BundlesavedInstanceState){

te(savedInstanceState);

tContentView(ty_popup_menu);

findViewById(_menu_view).tOnClickListener(kListener(){

@Override

publicvoidonClick(Viewview){

PopupMenupopupMenu=newPopupMenu(,view);//1.实例化PopupMenu

getMenuInflater().inflate(_menu,u());//2.加载Menu资源

//3.为弹出菜单设置点击监听

enuItemClickListener(ItemClickListener(){

@Override

publicbooleanonMenuItemClick(MenuItemitem){

switch(mId()){

_add:

xt(,"添加",_SHORT).show();

returntrue;

_delete:

xt(,"删除",_SHORT).show();

returntrue;

_more:

xt(,"更多",_SHORT).show();

returntrue;

default:

returnfal;

}

}

});

();//4.显⽰弹出菜单

}

});

}

本文发布于:2023-03-15 19:56:15,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678881376266997.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:菜单栏.doc

本文 PDF 下载地址:菜单栏.pdf

上一篇:sony摄像机
下一篇:返回列表
标签:菜单栏
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图