我發現我在學習每一個Android介面控制項的時候花的時間都比較多,因為是初學,可能學習方法和方式還有待改進。
本篇記錄選項菜單和操作功能表的基本實現和用法。
選項菜單即按下手機硬按鍵MENU鍵彈出的底部菜單,最多同時顯示6個小項目,更多將顯示為MORE..點擊到子功能表
//添加功能表項目
@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubmainmenu = menu;mainmenu.add(0, 1, Menu.NONE, "菜單1").setIcon(R.drawable.icon);mainmenu.add(0, 2, Menu.NONE, "菜單2");mainmenu.add(0, 3, Menu.NONE, "菜單3");mainmenu.add(1, 4, Menu.NONE, "菜單4");mainmenu.add(1, 5, Menu.NONE, "菜單5");mainmenu.add(1, 6, Menu.NONE, "菜單6");// add的第一個參數是group號,可制訂點擊按鈕對某組全體控制隱藏顯示return super.onCreateOptionsMenu(menu);}
//實現菜單行為
@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubsetTitle(item.getItemId() + item.getTitle().toString());return super.onOptionsItemSelected(item);}
//隱藏某群組菜單函數,寫在一個按鈕的監聽函數中
private OnClickListener TOGGLE_LISTEN = new OnClickListener() {public void onClick(View v) {if (mIsGroupVisible == true) {mainmenu.setGroupVisible(1, false);//隱藏組號1的菜單群mIsGroupVisible = false;} else {mainmenu.setGroupVisible(1, true);mIsGroupVisible = true;}}};
//在onCreat函數中註冊要接受長按響應操作功能表
//為兩個文字框註冊操作功能表 this.registerForContextMenu(findViewById(R.id.longan2)); this.registerForContextMenu(findViewById(R.id.longan));
//添加長按功能表項目
@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {// TODO Auto-generated method stubswitch(v.getId()){case R.id.longan://if(menu.hasVisibleItems())return;menu.add(2, 11, Menu.NONE, "菜單1");SubMenu master = menu.addSubMenu(4, 41, 1, "Master..");//SubMenu是子功能表,有且只有一層,可以接受點擊master.add("wt1");master.add("wt2");master.add("wt3");menu.add(2, 12, Menu.NONE, "菜單2");menu.add(2, 13, Menu.NONE, "菜單3");menu.add(2, 14, Menu.NONE, "菜單4");break;case R.id.longan2:menu.add(3, 21, Menu.NONE, "菜單21");menu.add(3, 22, Menu.NONE, "菜單22");break;}super.onCreateContextMenu(menu, v, menuInfo);}
//菜單響應函數,與前面option menu類似
@Overridepublic boolean onContextItemSelected(MenuItem item) {// TODO Auto-generated method stubsetTitle(item.getTitle());return super.onContextItemSelected(item);}