第一種方式,使用Java方式
第二種方式,使用menu.xml
package liudeli.activity; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.SubMenu; import android.widget.Toast; public class MenuActivity extends Activity { private static final int MENU_ITEM_CREATE = 0; private static final int MENU_ITEM_DELETE = 1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } /** * 第一步:菜單選項 * 創建菜單 * @param menu * @return */ @Override public boolean onCreateOptionsMenu(Menu menu) { /************************* 第一種方式,使用Java方式 ****************************/ /** * 參數一: 組號 * 參數二: 唯一的ID號 * 參數三: 排序號 * 參數四: 標題 */ MenuItem menu_item_create = menu.add(0, MENU_ITEM_CREATE, 0, "新建"); // 設置是否可點 menu_item_create.setEnabled(true); // 設置圖標,菜單有時候加載不出來,但是不會報錯 menu_item_create.setIcon(android.R.drawable.ic_menu_camera); /** * 參數一: 組號 * 參數二: 唯一的ID號 * 參數三: 排序號 * 參數四: 標題 */ menu.add(0, MENU_ITEM_DELETE, 0, "刪除"); /** * 添加子菜單 */ SubMenu subMenu = menu.addSubMenu("子菜單"); subMenu.add(0, 11, 0, "子菜單1"); subMenu.add(0, 12, 0, "子菜單2"); /************************* 第二種方式,使用menu.xml ****************************/ // 菜單加載器 MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.menu, menu); /************************* menu說明 ****************************/ /*menu.add("菜單一"); // 添加菜單 menu.add(1, Menu.FIRST, Menu.FIRST, "菜單二"); // 添加菜單 帶組號... int group1 = 1; int group2 = 2; menu.add(group1, 1, 1, "item1");// 添加菜單 帶組號... menu.add(group1, 2, 2, "item2");// 添加菜單 帶組號... menu.add(group2, 3, 3, "item3");// 添加菜單 帶組號... menu.add(group2, 4, 4, "item4");// 添加菜單 帶組號... menu.removeGroup(group1); //刪除一個組 menu.setGroupVisible(group1, false); //設置可見性 menu.setGroupEnabled(group2, false); //設置是否可點 menu.setGroupCheckable(group2, true, t); //設置一組菜單的勾選情況*/ return super.onCreateOptionsMenu(menu); } /** * 第二步:菜單的響應 * 處理menu的點擊事件 */ @Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); /** * 對應 第一種方式,使用Java方式 */ switch (id) { case MENU_ITEM_CREATE: Toast.makeText(this, item.getTitle() + " , 創建", Toast.LENGTH_LONG).show(); break; case MENU_ITEM_DELETE: Toast.makeText(this, item.getTitle() + " , 刪除", Toast.LENGTH_LONG).show(); break; case 11: // 上面代碼 itemid定義是11 Toast.makeText(this, item.getTitle() + " , 第一個子菜單", Toast.LENGTH_LONG).show(); break; case 12: // 上面代碼 itemid定義是12 Toast.makeText(this, item.getTitle() + " , 第二個子菜單", Toast.LENGTH_LONG).show(); break; default: break; } // item.getTitle() 獲取上面代碼設置的標題 item.getItemId() 獲取上面代碼設置的ItemId // Toast.makeText(this, item.getTitle() + " , " + item.getItemId(), Toast.LENGTH_LONG).show(); /** * 對應 第二種方式,使用menu.xml */ switch (id) { case R.id.menu_create: Toast.makeText(this, item.getTitle() + " , menu.xml創建", Toast.LENGTH_LONG).show(); break; case R.id.menu_delete: Toast.makeText(this, item.getTitle() + " , menu.xml刪除", Toast.LENGTH_LONG).show(); break; case R.id.menu_sub1: Toast.makeText(this, item.getTitle() + " , menu.xml子菜單一", Toast.LENGTH_LONG).show(); break; case R.id.menu_sub2: Toast.makeText(this, item.getTitle() + " , menu.xml子菜單二", Toast.LENGTH_LONG).show(); break; } // item.getTitle() 獲取上面代碼設置的標題 item.getItemId() 獲取上面代碼設置的ItemId // Toast.makeText(this, item.getTitle() + " , " + item.getItemId(), Toast.LENGTH_LONG).show(); return super.onOptionsItemSelected(item); } }
menu.xml
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_create" android:icon="@android:drawable/ic_menu_add" android:title="X新建"> </item> <item android:id="@+id/menu_delete" android:icon="@android:drawable/ic_menu_add" android:title="X刪除"> </item> <item android:title="X子菜單"> <menu> <item android:id="@+id/menu_sub1" android:icon="@android:drawable/ic_menu_add" android:title="X子菜單1"> </item> <item android:id="@+id/menu_sub2" android:icon="@android:drawable/ic_menu_add" android:title="X子菜單2"> </item> </menu> </item> </menu>
效果圖: