Android的菜单Menu创建

关于Menu的几个重要的方法,都是Activity的方法;

  • onCreateOptionsMenu(Menu menu)
    每次Activity一创建就会执行,一般只执行一次;
  • onPrepareOptionsMenu(Menu menu)
    每次menu被打开时,该方法就会执行一次;
  • onOptionsItemSelected(MenuItem item)
    每次menu菜单项被点击时,该方法就会执行一次;
  • invalidateOptionsMenu()
    刷新menu里的选项里内容,它会调用onCreateOptionsMenu(Menu menu)方法
  • onCreateContextMenu()
    创建控件绑定的上下文菜单menu,根据方法里的View参数识别是哪个控件绑定
  • onContextItemSelected(MenuItem item)
    点击控件绑定的上下菜单menu的内容项

一、Menu标题菜单项创建
  1. 在Android工程目录下的res包下,右键选择New菜单项下的Android resource directory,并以menu命名文件夹的名字;
  2. 右键menu文件夹,选择Menu resource file选项,创建main_menu.xml文件


    


效果图
Android的菜单Menu创建_第1张图片
Menu.png
  1. 在Activity中重写三个方法
 @Override
    public boolean onPrepareOptionsMenu(Menu menu) {
        Log.i("dayang","打开Menu时执行该方法");
        return super.onPrepareOptionsMenu(menu);
    }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
        Log.i("dayang","onCreateOptionsMenu");
        //创建Menu菜单
       getMenuInflater().inflate(R.menu.main_menu,menu);
       return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
      Log.i("dayang","选择列表项时执行------------");
       //对菜单项点击内容进行设置
       int id = item.getItemId();
       if (id == R.id.openMenu) {
            Toast.makeText(this,"打开文件",Toast.LENGTH_SHORT).show();
      } else {
            Toast.makeText(this,"关闭文件",Toast.LENGTH_SHORT).show();
}
       return super.onOptionsItemSelected(item);
}
效果图
Android的菜单Menu创建_第2张图片
Menu点击.png
二、创建上下文菜单项

registerForContextMenu(View view)绑定相关点击控件长按出菜单项

效果图1
Android的菜单Menu创建_第3张图片
Menu长按图片1.jpg
效果图2
Android的菜单Menu创建_第4张图片
Menu长按图片2.jpg
1.创建main_menu2.xml






2.创建的Activity的布局xml文件


       
        

3.创建的Activity,设置控件长按事件
public class ContextActivity extends AppCompatActivity {    
       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_context);
           EditText et1= (EditText) findViewById(R.id.etMenu1);
           EditText et2= (EditText) findViewById(R.id.etMenu2);
           registerForContextMenu(et1);
           registerForContextMenu(et2);
}    
       @Override
        public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
             if(v.getId()==R.id.etMenu1){
                  getMenuInflater().inflate(R.menu.main_menu,menu);
            }else if(v.getId()==R.id.etMenu2){
                  getMenuInflater().inflate(R.menu.main_menu2,menu);
}    
}    
        @Override
        public boolean onContextItemSelected(MenuItem item) {        
            return true;  
}}

你可能感兴趣的:(Android的菜单Menu创建)