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()方法會被調用多次