版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
菜单(Menu)北京电子科技职业学院目录1.认识菜单2.常用菜单3.实例演示1.认识菜单
手机和电脑不同,它的屏幕空间非常有限,因此充分地利用屏幕空间在手机界面设计中就显得非常重要。如果你的活动中有大量的菜单需要显示,这个时候界面设计就会比较尴尬,因为仅这些菜单就可能占用屏幕将近三分之一的空间,为此Android给我们提供了一种方式,可以让菜单都能得到展示的同时,还能不占用任何屏幕空间。
2.
常用菜单1.选项菜单(OptionMenu)OptionMenu:选项菜单,android中最常见的菜单,在右上角以三点显示也可以通过Menu键来调用而菜单的XML资源文件,需要创建在/res/menu/目录下,并且包含一下几个元素:<menu>:定义一个Menu,是一个菜单资源文件的根节点,里面可以包含一个或者多个<item>和<group>元素。<item>:创建一个MenuItem,代表了菜单中一个选项。<group>:对菜单项进行分组,可以以组的形式操作菜单项。<item>元素除了常规的id、icon、title属性的支持,还有一个重要的属性:android:showAsAction,这个属性是起兼容性的,描述了在Android的高版本中,菜单项何时以何种方式加入到ActionBar中。2.常用属性还可以通过android:icon=“@drawable/search”属性添加上图标,效果如图二所示:如果想让MenuItem变成ActionBar的形式,可以修改res/menu/main.xml中的android:showAsAction属性,它的属性值一共有下面几种:ifRoom表示:如果有空间,就显示出来。withText表示:只显示文本(在配了图标的情况下)。如果这里我将属性设置为always,效果如图一所示:(图一)(图二)(注意:直接写android:showAsAction=“always”是无效的,需要添加xmlns:app=/apk/res-auto然后改为app:showAsAction=“always”)2.常用属性2.子菜单(SubMenu)android中点击子菜单将弹出一个显示子菜单项的悬浮框,子菜单不支持嵌套,即不能包括其他子菜单,所谓的子菜单只是在<item>中又嵌套了一层<menu>。2.常用属性ContextMenu:上下文菜单,通过长按某个视图组件后出现的菜单,该组件需注册上下文菜单。
ContextMenu使用的流程如下:Step1:重写onCreateContextMenu()方法Step2:为view组件注册上下文菜单,使用registerForContextMenu()方法,参数是ViewStep3:重写onContextItemSelected()方法为菜单项指定事件监听器3.上下文菜单(ContextMenu)2.常用属性4.弹出菜单(PopupMenu)一个类似于PopupWindow(弹出窗口)的控件,他可以很方便的在指定View下显示一个弹出菜单,而且他的菜单选项可以来自于Menu资源。3.实例演示1.四种菜单的简单应用。步骤1.首先完成activity_main布局如下所示:代码如下:<LinearLayout
xmlns:android="/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="HelloWorld!"/>
<TextView
android:id="@+id/tv_context"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="30sp"
android:text="HelloWorld!"/>
<Button
android:id="@+id/btn_pop"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="弹出菜单"
android:layout_gravity="center_horizontal"
android:layout_marginTop="300dp"/>
</LinearLayout>
3.实例演示步骤2.完成main的菜单文件,在res目录下新建一个menu文件夹,右击res目录—〉New—〉Directory,输入文件名menu,点击OK。接着在这个文件夹下再新建一个名叫main的菜单文件main.xml。此布局代码包含了选项菜单和子菜单。如下所示,同样地完成布局代码main.xml、menu_context.xml、menu_pop.xml。代码:<menuxmlns:android="/apk/res/android"
xmlns:app="/apk/res-auto">
<item
android:id="@+id/Search_item"
android:icon="@drawable/search"
app:showAsAction="always"
android:title="搜索"/>
<item
android:id="@+id/setting"
android:title="设置文字颜色">
<!--子菜单-->
<menu><item
android:id="@+id/RED"
android:orderInCategory="300"
app:showAsAction="never"android:title="设文字为红色"/><item
android:id="@+id/GREEN"
android:orderInCategory="400"
app:showAsAction="never"
android:title="设文字为绿色"/>
<item
android:id="@+id/BLUE"
android:orderInCategory="400"
app:showAsAction="never"
android:title="设文字为蓝色"/>
</menu>
</item>
</menu>3.实例演示步骤3.接着我们完成MainActivity的JAVA文件。我们一个一个地实现每个菜单的功能,如下所示
1.首先完成选项菜单和子菜单的主要代码。
publicclassMainActivityextendsAppCompatActivity{//定义不同颜色的菜单项的标识:
finalprivateintRED=110;
finalprivateintGREEN=111;
finalprivateintBLUE=112;
privateTextViewtv_text;@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_text=(TextView)findViewById(R.id.tv_text);
}
Toast.LENGTH_SHORT).show();
break;
caseR.id.GREEN:
tv_text.setTextColor(Color.GREEN);
Toast.makeText(this,"文字变绿",Toast.LENGTH_SHORT).show();
break;caseR.id.BLUE:
tv_text.setTextColor(Color.BLUE);
Toast.makeText(this,"文字变蓝",Toast.LENGTH_SHORT).show();
break;
caseR.id.Search_item:
Toast.makeText(this,"搜索",Toast.LENGTH_SHORT).show();
break;
}
returnsuper.onOptionsItemSelected(item);
}
}@Override
publicbooleanonOptionsItemSelected(MenuItemitem){
//Handleactionbaritemclickshere.Theactionbarwill
//automaticallyhandleclicksontheHome/Upbutton,solong
//asyouspecifyaparentactivityinAndroidManifest.xml.
switch(item.getItemId()){
caseR.id.RED:tv_text.setTextColor(Color.RED);
Toast.makeText(this,"文字变红",
3.实例演示步骤4.接着我们完成MainActivity的JAVA文件。我们一个一个地实现每个菜单的功能,如下所示
privateTextViewtv_context;tv_context=(TextView)findViewById(R.id.tv_context);registerForContextMenu(tv_context);@Override
//重写上下文菜单的创建方法
publicvoidonCreateContextMenu(ContextMenumenu,Viewv,
ContextMenu.ContextMenuInfomenuInfo){
MenuInflaterinflator=newMenuInflater(this);
inflator.inflate(R.menu.menu_context,menu);
super.onCreateContextMenu(menu,v,menuInfo);
}caseR.id.red:
Toast.makeText(this,"全选",Toast.LENGTH_SHORT).show();
break;
caseR.id.green:
Toast.makeText(this,"复制",Toast.LENGTH_SHORT).show();
break;
caseR.id.blue:
Toast.makeText(this,"粘贴",Toast.LENGTH_SHORT).show();
break;2.上下文菜单的主要代码。3.实例演示步骤5.接着我们完成MainActivity的JAVA文件。我们一个一个地实现每个菜单的功能,如下所示
1.最后弹出菜单的主要代码。privateButtonbtn_pop;
btn_pop=(Button)findViewById(R.id.btn_pop);
btn_pop.setOnClickListener(newView.OnClickListener(){
@Override
publicvoidonClick(Viewv){
PopupMenupopup=newPopupMenu(MainActivity.this,btn_pop);
popup.getMenuInflater().inflate(R.menu.menu_pop,popup.getMenu());
popup.setOnMenuItemClickListener(newPopupMenu.OnMenuItemClickListener(){
@Override
publicbooleanonMenuItemClick(MenuItemitem){
switch(item.getItemId())
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年元宇宙文旅体验馆商业计划书
- 极端高温对口腔正畸矫治器佩戴舒适度的影响
- 极端气候下医疗建筑应急节能策略
- 临时道路硬化及养护服务合同
- 26年不良反应识别能力评估指引
- 第3课 笔情墨意抒胸脆说课稿2025学年初中美术苏少版八下-苏少版
- 老年人日常保健指南
- 2026年安徽省安庆市岳西县秒和初中、石关初中等校中考化学联考试卷(含答案)
- 脑部功能重建中的中医护理介入
- 初中友谊成长主题班会2025说课稿
- 雷克萨斯ES说明书
- 唐太宗李世民人物简介模板
- 9.3 LLDPE物质安全资料表-2
- 2023年广东交通职业技术学院单招综合素质模拟试题及答案解析
- YC/T 88.1-2006烟草机械喂料机第1部分:型式与基本参数
- LY/T 2422-2015薇甘菊防治技术规程
- 真空预压传统式与直排式介绍ghg课件
- GB/T 5169.5-2020电工电子产品着火危险试验第5部分:试验火焰针焰试验方法装置、确认试验方法和导则
- 大功率商用电磁灶使用说明书
- 工业机器人编程与实操期末试题
- 初中化学中考其他-学案离子(物质)的检验鉴别
评论
0/150
提交评论