Android开发之Menu组件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Android开发之Menu组件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7734字,纯文字阅读大概需要12分钟。
内容图文
菜单Menu大致分为三种类型:选项菜单(OptionsMenu),上下文菜单(ContextMenu),子菜单(SubMenu)。
1、选项菜单
在一个Activity界面中点击手机Menu键,在屏幕下方弹出的菜单就叫选项菜单(OptionsMenu)。
第一个int类型的group ID参数,代表的是组概念,你可以将几个菜单项归为一组,以便更好的以组的方式管理你的菜单按钮。
第二个int类型的item ID参数,代表的是项目编号。这个参数非常重要,一个item ID对应一个menu中的选项。在后面使用菜单的时候,就靠这个item ID来判断你使用的是哪个选项。
第三个int类型的order ID参数,代表的是菜单项的显示顺序。默认是0,表示菜单的显示顺序就是按照add的显示顺序来显示。
第四个String类型的title参数,表示选项中显示的文字。
1 package com.example.menu; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.Menu; 6 import android.view.MenuItem; 7 import android.widget.Toast; 8 import android.app.AlertDialog; 9 import android.content.DialogInterface; 10 11 public class MainActivity extends Activity { 1213 @Override 14protectedvoid onCreate(Bundle savedInstanceState) { 15super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_main); 17 } 1819/*20 * (non-Javadoc) 21 * 22 * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu) 23 * 创建一个选项菜单的步骤: 1、覆写Activity的onCreateOptionsMenu(Menu menu)函数 24 * 2、调用menu的add()方法添加菜单项(MenuItem),可以调用MenuItem的setIcon()方法来为菜单设置图标 25 * 3、当菜单项()被选择时,我们可以通过覆盖Activity的onOptionsItemSeleted()方法来响应事件 26*/27//onCreateOptionsMenu()此方法只会调用一次,即第一次显示的时候会调用.28publicboolean onCreateOptionsMenu(Menu menu)// 需要重写的函数29 { 30 menu.add(0, 0, 0, "关于"); 31 menu.add(0, 1, 0, "离开"); 3233returnsuper.onCreateOptionsMenu(menu); 34 } 35//如果需要更新菜单项.可以在onPrepareOptionsMenu()方法中操作.36publicboolean onPrepareOptionMenu(Menu menu) 37 { 38 Toast.makeText(this, "菜单显示器前执行的方法", Toast.LENGTH_SHORT).show(); 39returnsuper.onPrepareOptionsMenu(menu); 4041 } 42publicboolean onOptionsItemSelected(MenuItem item)// 点击后响应的事件43 { 44super.onOptionsItemSelected(item); 45switch (item.getItemId()) { 46case 0: 47 openOptionsDialog(); 48break; 49case 1: 50 exitopenOptionsDialog(); 51break; 52 } 53returnsuper.onOptionsItemSelected(item); 5455 } 5657privatevoid openOptionsDialog() { 58new AlertDialog.Builder(this).setTitle("关于").setMessage("手机的配置信息") 59 .setPositiveButton("确定", new DialogInterface.OnClickListener() { 6061 @Override 62publicvoid onClick(DialogInterface arg0, int arg1) { 63// TODO Auto-generated method stub6465 } 66 }).show(); 67 } 6869privatevoid exitopenOptionsDialog() { 70new AlertDialog.Builder(this).setTitle("离开").setMessage("是否离开?") 71 .setPositiveButton("确定", new DialogInterface.OnClickListener() { 7273 @Override 74publicvoid onClick(DialogInterface arg0, int arg1) { 75// TODO Auto-generated method stub76 finish(); 77 } 78 }) 79 .setNegativeButton("取消", new DialogInterface.OnClickListener() { 8081 @Override 82publicvoid onClick(DialogInterface arg0, int arg1) { 83// TODO Auto-generated method stub84 arg0.dismiss(); 85 } 86 }).show(); 87 } 88 }
2、上下文菜单
Android 的上下文菜单类似于Windows上的右键菜单。当为一个视图注册了上下文菜单之后,长按(2 秒左右)这个视图对象就会弹出一个浮动菜单,即上下文菜单。任何视图都可以注册上下文菜单,不过,最常见的是用于列表视图ListView的item。
创建上下文菜单步骤:
1、 覆写 Activity 的 onCreateContextMenu() 方法,调用 Menu 的 add 方法添加菜单项(MenuItem)。
2、覆盖 Activity 的 onContextItemSelected() 方法,响应上下文菜单菜单项的单击事件。
3、调用 registerForContextMenu() 方法,为视图注册上下文菜单。
代码:
1 package com.example.menu; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.ContextMenu; 6 import android.view.ContextMenu.ContextMenuInfo; 7 import android.view.Menu; 8 import android.view.MenuItem; 9 import android.view.View; 10 import android.widget.ArrayAdapter; 11 import android.widget.ListView; 12 import android.widget.Toast; 13 14 public class MainActivity extends Activity { 1516private ListView listview = null; 17private ArrayAdapter<String> adapter; 18private String info[] = { "选项1", "选项2", "选项3", "选项4","选项5","选项6"}; 1920 @Override 21protectedvoid onCreate(Bundle savedInstanceState) { 22super.onCreate(savedInstanceState); 23 setContentView(R.layout.activity_main); 24 listview=(ListView)findViewById(R.id.listview); 25 adapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,info); 26 listview.setAdapter(adapter); 27this.registerForContextMenu(listview); 28 } 29publicvoid onCreateContextMenu(ContextMenu menu, View view, 30 ContextMenuInfo info) { 31 menu.setHeaderTitle("我是上下文菜单"); 32 menu.setHeaderIcon(R.drawable.ic_launcher); 33 menu.add(1, 1, 1, "我是上下文菜单选项1"); 34 menu.add(1, 2, 1, "我是上下文菜单选项2"); 35 menu.add(1, 3, 1, "我是上下文菜单选项3"); 36 menu.add(1, 4, 1, "我是上下文菜单选项4"); 3738 } 39publicboolean onContextItemSelected(MenuItem item) 40 { 41switch (item.getItemId()) { 42case 1: 43 Toast.makeText(this, "点击上下文菜单选项1", Toast.LENGTH_SHORT).show(); 44break; 45case 2: 46 Toast.makeText(this, "点击上下文菜单选项2", Toast.LENGTH_SHORT).show(); 47break; 48case 3: 49 Toast.makeText(this, "点击上下文菜单选项3", Toast.LENGTH_SHORT).show(); 50break; 51case 4: 52 Toast.makeText(this, "点击上下文菜单选项4", Toast.LENGTH_SHORT).show(); 53break; 54 } 55returnsuper.onContextItemSelected(item); 5657 } 58publicvoid onContextMenuClosed(Menu menu) 59 { 60 menu.close(); 61 } 6263 }
注意的问题:
android.R.layout.simple_list_item_1为系统是系统定义好的布局文件只显示一行文字,数据源(一个List集合)。凡是以android.R...都为系统定义好的。
3、子菜单
创建子菜单的步骤:
1、 覆写Activity的onCreateOptionsMenu()方法,调用Menu的addSubMenu()方法来添加子菜单
2、 调用SubMenu的add()方法,添加子菜单项(addSubMenu)
3、 覆写onOptionsItemSelected()方法,响应子菜单的单击事件
代码:
1 package com.example.menu; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.Menu; 6 import android.view.MenuItem; 7 import android.view.SubMenu; 8 import android.widget.ArrayAdapter; 9 import android.widget.ListView; 10 import android.widget.Toast; 11 12 public class MainActivity extends Activity { 1314private ListView listview = null; 15private ArrayAdapter<String> adapter; 16private String info[] = { "选项1", "选项2", "选项3", "选项4","选项5","选项6"}; 1718 @Override 19protectedvoid onCreate(Bundle savedInstanceState) { 20super.onCreate(savedInstanceState); 21 setContentView(R.layout.activity_main); 2223 } 24publicboolean onCreateOptionsMenu(Menu menu) 25 { 26 SubMenu s1=menu.addSubMenu(1,0,1,"我是菜单1"); 27 s1.setIcon(R.drawable.ic_launcher); 28 s1.setHeaderTitle("子菜单");//设置子菜单标题29 s1.add(1,1,0,"我是子菜单(1)"); 30 s1.add(1, 2, 0, "我是子菜单(2)"); 31 s1.add(1, 3, 0, "我是子菜单(3)"); 32 s1.add(1, 4, 0, "我是菜子单(4)"); 33 SubMenu s2 = menu.addSubMenu(2, 0, 1, "我是菜单2"); 34 s2.setIcon(R.drawable.ic_launcher); 35 s2.setHeaderTitle("子菜单"); 36 s2.add(2, 1, 1, "我是子菜单(1)"); 37 s2.add(2, 2, 1, "我是子菜单(2)"); 38 s2.add(2, 3, 1, "我是子菜单(3)"); 39 s2.add(2, 4, 1, "我是子菜单(4)"); 40returnsuper.onCreateOptionsMenu(menu); 41 } 4243 @Override 44publicboolean onOptionsItemSelected(MenuItem item) { 45if (item.getGroupId() == 1) {// 判断分组46switch (item.getItemId()) { 47case 1: 48 Toast.makeText(MainActivity.this, "菜单1的子菜单1被点击", 49 Toast.LENGTH_SHORT).show(); 50break; 51case 2: 52 Toast.makeText(MainActivity.this, "菜单1的子菜单2被点击", 53 Toast.LENGTH_SHORT).show(); 54break; 55case 3: 56 Toast.makeText(MainActivity.this, "菜单1的子菜单3被点击", 57 Toast.LENGTH_SHORT).show(); 58break; 59case 4: 60 Toast.makeText(MainActivity.this, "菜单1的子菜单4被点击", 61 Toast.LENGTH_SHORT).show(); 62break; 6364 } 65 } elseif (item.getGroupId() == 2) { 66switch (item.getItemId()) { 67case 1: 68 Toast.makeText(MainActivity.this, "菜单2的子菜单1被点击", 69 Toast.LENGTH_SHORT).show(); 70break; 71case 2: 72 Toast.makeText(MainActivity.this, "菜单2的子菜单2被点击", 73 Toast.LENGTH_SHORT).show(); 74break; 75case 3: 76 Toast.makeText(MainActivity.this, "菜单2的子菜单3被点击", 77 Toast.LENGTH_SHORT).show(); 78break; 79case 4: 80 Toast.makeText(MainActivity.this, "菜单2的子菜单4被点击", 81 Toast.LENGTH_SHORT).show(); 82break; 83 } 84 } 8586returnsuper.onOptionsItemSelected(item); 87 } 88 }
原文:http://www.cnblogs.com/hsshy/p/4783997.html
内容总结
以上是互联网集市为您收集整理的Android开发之Menu组件全部内容,希望文章能够帮你解决Android开发之Menu组件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。