1、选项菜单:OptionsMenu 按menu键弹出的菜单


2、上下文菜单 ContextMenu 长按某个控件弹出的菜单


选项菜单:有两种创建方式

第一种:

功能:按下menu键弹出菜单列表。

使用场景:必要的不常用的功能。

重写onCreateOptionsMenu()方法(创建activity的时候会默认重写onCreateOptionsMenu方法)

public boolean onCreateOptionsMenu(Menu menu) {

menu.add(0, 1, 0, "确定").setIcon(R.drawble.XXX);

menu.add(0, 2, 0, "取消");

return true;

}

注意:OptionsMenu最多能显示六个、超过部分是以列表形式展现的。

按钮的点击事件:

重写onOptionsItemSelected()方法:

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) { //通过按钮的id来区别

case 1:

Toast.makeText(this, "点击了确定", Toast.LENGTH_LONG).show();

break;

case 2:

Toast.makeText(this, "点击了取消", Toast.LENGTH_LONG).show();

break;


default:

break;

}

return super.onOptionsItemSelected(item);

}



第二种:直接通过xml可视化添加getMenuInflater().inflate(R.menu.xml_optionsmenu, menu);

使用这个方法来得到

//创建

public boolean onCreateOptionsMenu(Menu menu) {

// Inflate the menu; this adds items to the action bar if it is present.

getMenuInflater().inflate(R.menu.xml_optionsmenu, menu);

return true;

}

//点击事件

public boolean onOptionsItemSelected(MenuItem item) {

switch (item.getItemId()) {

case R.id.item1:

Toast.makeText(this, "点击了确定", Toast.LENGTH_LONG).show();

break;

case R.id.item2:

Toast.makeText(this, "点击了确定", Toast.LENGTH_LONG).show();

break;

default:

break;

}

return super.onOptionsItemSelected(item);

}


上下文菜单 ContextMenu

创建步骤:

1、registerForContextMenu(mTextView1); //为某个控件注册上下文菜单

2、重写onCreateContextMenu();

public void onCreateContextMenu(ContextMenu menu, View v,

ContextMenuInfo menuInfo) {

Log.e("onCreateContextMenu", "onCreateContextMenu");

switch (v.getId()) {

case R.id.textView1:

menu.add(0, 1, 0, "设置");

menu.add(0, 2, 0, "取消");

break;

case R.id.textView2:

menu.add(0, 3, 0, "设置1");

menu.add(0, 4, 0, "取消1");

break;

default:

break;

}

super.onCreateContextMenu(menu, v, menuInfo);

}

3、点击事件:重写onContextItemSelected();

public boolean onContextItemSelected(MenuItem item) {

switch (item.getItemId()) {

case 1:

mTextView1.setText("设置");

break;

case 2:

mTextView1.setText("取消");

break;

default:

break;

}

return super.onContextItemSelected(item);

}


选项菜单和上下文菜单的区别:

1、触发方式不一样。(按menu键; 长按控件)

2、显示方式不一样。 (界面底部弹出;界面中间)

3、上下文菜单触发方式比较隐蔽。

4、范围不一样 (activity; view)

5、onCreateOptionsMenu()方法只调用一次

onCreateContextMenu()方法会被调用多次