Android-普通選單Menu
阿新 • • 發佈:2018-12-25
第一種方式,使用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 extendsActivity { 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>
效果圖: