創建選項菜單的步驟:
1、覆蓋Activity 的onCreateOptionMenu(Menu menu)方法,當菜單第一次被打開時調用
2、調用Menu 的add( )方法添加菜單項(MenuItem),同時可以調用MenuItem 的setIcon( )方法來為菜單項設置圖標
3、當菜單項(MenuItem)被選擇時,覆蓋Activity 的onOptionsItemSelected(MenuItem item)來響應事件
復制代碼
public class MainActivity extends Activity {
// 定義一些變量,後面直接拿來用
private static final int START_ITEM = Menu.FIRST;
private static final int OVER_ITEM = Menu.FIRST + 1;
private static final int SET_ITEM1 = Menu.FIRST + 2;
private static final int SET_ITEM2 = Menu.FIRST + 3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// 添加菜單項(組ID,菜單項ID,排序,標題)
menu.add(0, START_ITEM, 100, "開始");
menu.add(0, OVER_ITEM, 200, "結束");
// 添加子菜單
SubMenu sub1 = menu.addSubMenu("設置");
sub1.add(1, SET_ITEM1, 300, "設置聲音");
sub1.add(1, SET_ITEM2, 400, "設置桌面");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case START_ITEM:
// 提示信息
Toast.makeText(this, "開始", Toast.LENGTH_SHORT).show();
break;
case OVER_ITEM:
// 提示信息
Toast.makeText(this, "結束", Toast.LENGTH_SHORT).show();
break;
case SET_ITEM1:
// 提示信息
Toast.makeText(this, "聲音設置", Toast.LENGTH_SHORT).show();
break;
case SET_ITEM2:
// 提示信息
Toast.makeText(this, "設置桌面", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
}
復制代碼
Context Menu
顧名思義,與上下文(環境)有關。思想類似於Windows中的右鍵單擊彈出的快捷菜單。操作時需要長時間按住某個東東不放。
創建上下文菜單的步驟:
1、覆蓋Activity 的onCreateContextMenu(Menu menu)方法,調用Menu的add()方法添加菜單項(MenuItem)。
2、覆蓋Activity 的onContextItemSelected(MenuItem iitem)來響應事件。
3、調用registerForContextMenu( )方法來為視圖注冊上下文菜單。
復制代碼
public class MainActivity2 extends Activity {
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
// 獲取BUTTON對象
btn1 = (Button) findViewById(R.id.button1);
//在button上注冊上下文菜單
registerForContextMenu(btn1);
}
// 創建上下文菜單的事件方法
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
getMenuInflater().inflate(R.menu.menu_main2, menu);
}
// 上下文菜單項觸發事件
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.start:
Toast.makeText(this, "開始。。。", Toast.LENGTH_SHORT).show();
break;
case R.id.over:
Toast.makeText(this, "結束。。。", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
return super.onContextItemSelected(item);
}
}
復制代碼
Popup Menu
彈出式菜單.
彈出菜單是停靠在一個View上的一個模式菜單。如果View對象下方有空間,那麼彈出菜單將顯示在停靠對象的下方,否則會顯示在上方。這是非常有用的。
復制代碼
public class MainActivity3 extends Activity implements OnMenuItemClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main3);
}
public void showPopupMenu(View v){
//創建彈出式菜單對象(最低版本11)
PopupMenu popup = new PopupMenu(this,v);
//獲取菜單填充器
MenuInflater inflater = popup.getMenuInflater();
//填充菜單
inflater.inflate(R.menu.menu_main3, popup.getMenu());
//設置菜單項的單擊事件
popup.setOnMenuItemClickListener(this);
popup.show();
}
//彈出式菜單的單擊事件處理
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.copy:
Toast.makeText(this, "復制。。。", Toast.LENGTH_LONG).show();
break;
case R.id.del:
Toast.makeText(this, "刪除。。。", Toast.LENGTH_LONG).show();
break;
default:
break;
}
return false;
}
}