使用代码创建菜单的方式会使的代码臃肿,不利于后期修改和维护,程序可读性低,故下面介绍Andoird流行和推荐的菜单的定义方式:XML文件定义菜单。

进入正题,XML定义菜单的实例代码如下:

                                                                                                                                                                                                            

一、选项菜单加载到Activity中的方法如下:

在MainAcitivity中创建方法

   
public boolean onCreateOptionsMenu(Menu menu) {        MenuInflater inflater = new MenuInflater(this);        inflater.inflate(R.menu.menu_main,menu);        return super.onCreateOptionsMenu(menu);    }
 public boolean onOptionsItemSelected(MenuItem item) {        switch (item.getItemId()){            case R.id.font_10:                txt.setTextSize(10 * 2);                item.setChecked(true);  //  这条语句设置点击后的已选择效果                break;            case R.id.font_12:                txt.setTextSize(12 * 2);                item.setChecked(true);                break;        }        return super.onOptionsItemSelected(item);    }

onCreateOptionsMenu(Menu menu)将定义好的菜单文件加载到Activity的菜单中去
onOptionsItemSelected(MenuItem item){}设置菜单项的点击事件
   
二、对于上下文菜单
在Activity中新建下面两个方法:
   
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {        super.onCreateContextMenu(menu, v, menuInfo);        MenuInflater inflater = new MenuInflater(this);        inflater.inflate(R.menu.context_menu,menu);        menu.setHeaderIcon(R.drawable.color);        menu.setHeaderTitle("请选择背景颜色");    }
 public boolean onContextItemSelected(MenuItem item) {        switch(item.getItemId())        {            case R.id.red:                //  你的操作                break;        }        return super.onContextItemSelected(item);    }
onCreateContextMenu(Menu menu)将定义好的菜单文件加载到Activity的菜单中去
onContextItemSelected(MenuItem item){}设置上下文菜单项的点击事件
需要使用上下文菜单的组件可以再Activity中的onCreate()方法中注册上下文菜单,代码如下:
registerForContextMenu(View v); // 组件v注册了上下文菜单,长按该组件就能弹出该上下文菜单
   
三、PopupMenu创建弹出式菜单,使用步骤如下:
1.  调用 new PopupMenu(Context context,View anchor)创建下拉菜单,anchor是要激发该菜单的组件
(菜单在该anchor下显示)
2.  调用getMenuInflater.inflate(R.menu.x,new PopupMenu(Context context,View anchor))方法
 将菜单资源填充到PopupMenu中去
3. popMenu.show()方法显示弹出菜单
   
具体使用的代码如下:
   
PopupMenu popupMenu = new PopupMenu(MainActivity.this,findViewById(R.id.txt)); //  弹出式菜单将在这个id为txt的组件下显示                getMenuInflater().inflate(R.menu.popup_menu,popupMenu.getMenu());                popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {                    @Override                      public boolean onMenuItemClick(MenuItem item) { //  设置弹出式菜单项的点击事件                        switch(item.getItemId()){                            case R.id.hide:                                popupMenu.dismiss();  //隐藏菜单                                break;                            default:                                Toast.makeText(MainActivity.this, "点击了"+item.getTitle()+"菜单项",                                        Toast.LENGTH_SHORT).show();                        }                        return true;                    }                });                popupMenu.show();
其中的R.menu.popup_menu的文件定义如下:
   
<?xml version="1.0" encoding="utf-8"?>                

   
   
   





更多相关文章

  1. 在Android应用中定制菜单
  2. Android(安卓)Camera 通过V4L2与kernel driver的完整交互过程
  3. 【起航计划 014】2015 起航计划 Android(安卓)APIDemo的魔鬼步伐
  4. android中不同activity之间共享数据
  5. android之Android(安卓)Studio下自定义属性的定义和使用
  6. Android:SlidingMenu(侧滑菜单)用法示例
  7. Android自定义View—小巧清爽的多节点进度条
  8. Android(安卓)Gradle文件下获取自定义properties文件,并且获取值
  9. Android(安卓)彩色上下文菜单 Context

随机推荐

  1. android 编程技巧汇总
  2. LinearLayout按下(pressed)或获取焦点(foc
  3. Android数据共享 sharedPreferences 的使
  4. 他山之石——Android仿新浪微博底栏(Frag
  5. android dp 和 px 的相互转换
  6. android 取消edittext自动获取焦点弹出输
  7. Android硬件访问服务 (硬核最终篇)
  8. 用uliweb 创建项目
  9. Android手势翻页实现
  10. Android学习笔记_31_通过后台代码生成Vie