android基础知识2:MENU菜单
来源:互联网 发布:mysql 5.1.51.tar.gz 编辑:程序博客网 时间:2024/04/26 01:30
本文主要介绍两种菜单:选项菜单和上下文菜单。
1.选项菜单是你点击menu键出现在屏幕的下面的选项,很多软件都有选项菜单的使用。如联系人设置,分享等。只不过现在越来越多的手机选择取消menu菜单,所以ActionBar成了替代Menu的控件。还有就是很多软件自己定义了选项菜单。如UC浏览器。
2.上下文菜单主要是长按事件。如记事本的复制 粘贴等。 在长按过程中,我们还可以传递一些数据。
menu选项有两种添加方式,一种是在代码中直接通过menu.add添加。一种是在xml中定义,然后添加通过getMenuInflater添加到代码中。
2.上下文菜单主要是长按事件。如记事本的复制 粘贴等。 在长按过程中,我们还可以传递一些数据。
一:选项菜单。
(1)直接添加.
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// 显示一个menu菜单// TODO Auto-generated method stubmenu.add(0, 0, 0, "关于");/* * MenuItem m = menu.add(0, 1, 1, "退出"); m.setIntent(new * Intent(this,Other.class)); m.setOnMenuItemClickListener(new * OnMenuItemClickListener(){ * * @Override public boolean onMenuItemClick(MenuItem item) { * //注意这个地方有一个返回值。 // TODO Auto-generated method stub * Toast.makeText(MainActivity.this, "good", Toast.LENGTH_LONG).show(); * return true ; //返回false和返回true不知道有什么区别。 } * * }); //可以直接實現跳轉 */SubMenu fileMenu = menu.addSubMenu(0, 7, Menu.NONE, "file"); // 建立父菜单的选项SubMenu editMenu = menu.addSubMenu(0, 8, Menu.NONE, "edit");fileMenu.setIcon(R.drawable.ic_launcher);fileMenu.setHeaderIcon(R.drawable.ic_launcher);fileMenu.setHeaderTitle("请选择你要的颜色:");fileMenu.add(0, 1, Menu.NONE, "new"); // 建立子菜单选项fileMenu.add(0, 2, Menu.NONE, "open");fileMenu.add(0, 3, Menu.NONE, "save");fileMenu.setGroupCheckable(0, true, true); // 这三个属性是什么意思。editMenu.add(0, 4, Menu.NONE, "undo").setCheckable(true);// 设置个别选项为可选按钮editMenu.add(0, 5, Menu.NONE, "redo");return super.onCreateOptionsMenu(menu);// 此方法用户创建菜单/* * menu.add(int groupId,int itemId,int order,int titleRes) groupId * :所有操作群组的ID itemId ;每一个操作项目的Id order : 操作项目的安排顺序 titleRes : * 操作项目所显示的标题。 menu.add(0,0,0,"视频") .setIcon(R.drawable.ic_launcher) * 设置背景图片, .setShortcut('0', 'a'); 设置快捷键方式。点击a的时候相应事件。 */}public boolean onPrepareOptionsMenu(Menu menu) {// 选项菜单显示之前onPrepareOptionsMenu方法会被调用,你可以用此方法来根据打当时的情况调整菜单。return false;}@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// 点击的时候触发// TODO Auto-generated method stubsuper.onOptionsItemSelected(item);switch (item.getItemId()) {case 0:Toast.makeText(MainActivity.this, "点击了选项菜单", Toast.LENGTH_LONG).show();break;case 1:this.finish(); // 当为一的时候,退出程序。}return true;}public void onOptionsMenuClosed(Menu menu) {// 当菜单关闭的时候执行}public boolean onMenuOpened(int featureId, Menu menu) {// 单打开后发生的动作。return false;}
(2)通过xml添加:
public boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubMenuInflater in = getMenuInflater();in.inflate(R.menu.option_menu, menu);return true;}res/menu/option_item.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/item1" android:title="视频"/> <item android:id="@+id/item2" android:title="上传"/> </menu>
(3)自定义菜单
Android 菜单(OptionMenu)大全 建立你自己的菜单
(4)动态显示的菜单-根据代码显示不同的菜单选项
Android的Menu状态动态设置方法onPrepareOptionsMenu(Menu menu)
Android实例剖析笔记(二) 这个介绍了android例子中的动态菜单技术,没有怎么看懂。大致意思就是注册CATEGORY_ALTERNATIVE。判断增加一个动态菜单。2.上下文菜单
(1)定义所有的上下文
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { // TODO Auto-generated method stub super.onCreateContextMenu(menu, v, menuInfo); menu.add(0,0,0,"1"); //建立上下文菜单 menu.add(0,1,0,"d"); } @Override public boolean onContextItemSelected(MenuItem item) { // TODO Auto-generated method stub AlertDialog.Builder builder = new AlertDialog.Builder(this); //新建一个窗口 builder.setTitle("Title"); //设置窗口的标题 String message =null ; switch(item.getItemId()) //判断点击的是那个菜单 { case 0 : message="0"; break; case 1 : message="1"; break ; } builder.setMessage(message) ; //设置显示信息 builder.setPositiveButton("OK", new android.content.DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub setResult(RESULT_OK); } }); //添加一个点击事件到窗口 builder.create(); //建立这个窗口 builder.show(); // 显示这个窗口 return true ; } }
另外,在onCreateContextMenu中,可以通过ContextMenuInfo menuInfo传递数据。
@Override public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) { // Inflate the menu from xml. getMenuInflater().inflate(R.menu.context_menu, menu); // Use the current item to create a custom view for the header. final AdapterContextMenuInfo info = (AdapterContextMenuInfo) menuInfo; final Cursor c = (Cursor) mAlarmsList.getAdapter().getItem(info.position); }
(2)可以单独定义一个TextView的上下文选项
TextView eidt = (TextView)findViewById(R.id.textview); //先在Activity中定义一个view registerForContextMenu(eidt); // 注册这个view的事件,为menu事件,当长时间按住这个view的时候,事件将会被触及。//然后重写onCreateContextMenu这个方法,定义自己想要的menu菜单。
- android基础知识2:MENU菜单
- Android菜单(Menu) - 2
- Menu功能菜单 android
- Android 菜单Menu
- android menu菜单
- 菜单 Android Menu
- 菜单 Android Menu
- Android菜单(Menu)
- Android menu菜单小结
- android Menu菜单详解
- android menu菜单
- 菜单 Android Menu
- Android menu菜单详解
- Android Menu菜单
- Android Menu菜单
- Android Menu菜单
- Android 创建菜单Menu
- Android Menu功能菜单
- Android SQLite 开发教程(5): 导出数据库到XML 文件
- DM6446的交叉编译
- COM线程模型(七)——the end
- (高效topo)Labeling Balls(CD1316)
- linux设备驱动模型之 bus(总线)原理与实例分析
- android基础知识2:MENU菜单
- mvn本地仓库及私服的配置
- 线程终结
- 读两个故事一定弄懂“云计算”
- linux unix命令之 mkdir rmdir rm
- 记录3种jsp下载文件的方法
- AnimateWindow()
- 什么是Windows能干而Linux干不了的?
- C#反射之一(Assembly.Load及Assembly.Load.CreateInstance方法介绍)