Android菜单使用

使用代码创建菜单的方式会使的代码臃肿,不利于后期修改和维护,程序可读性低,故下面介绍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的文件定义如下:
 
  


    
    
    
    

 
  
 
  
 
  





你可能感兴趣的:(android)