版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
菜单(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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 医疗行业财务收支管理规程
- 外包售后服务协议书
- 森林防火搅拌站招标文件
- 展览馆玻璃膜施工合同
- 地铁站彩钢板维修合同
- 机械制造配件管理员聘用合同
- 医疗行业工伤救助流程
- 影视项目导演聘用合同正式签署
- 城市燃气工程土建施工合同范本
- 广州广东广州市卫生健康委员会直属事业单位广州市红十字会医院招聘65人笔试历年典型考点(频考版试卷)附带答案详解
- 伦理学全套课件
- Zippo-2024年美版年册集合
- 重大隐患判定标准培训课件
- 画法几何及机械制图课件
- 新产品、新技术、新工艺、新材料的应用
- 棋牌游戏自审自查报告
- JJF 2088-2023大型蒸汽灭菌器温度、压力、时间参数校准规范
- 电磁弹射技术
- 读后续写微技能Toshownottotell课件高三英语一轮复习写作专项
- 幼儿园食堂食品安全主体责任风险管控清单(日管控)
- 电气设备维护保养记录表
评论
0/150
提交评论