我發現我在學習每一個Android界面控件的時候花的時間都比較多,因為是初學,可能學習方法和方式還有待改進。
本篇記錄選項菜單和上下文菜單的基本實作和用法。
選項菜單即按下手機硬按鍵MENU鍵彈出的底部菜單,最多同時顯示6個小項目,更多将顯示為MORE..點選到子菜單
//添加菜單項
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// TODO Auto-generated method stub
mainmenu = 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);
}
//實作菜單行為
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
setTitle(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;
}
}
};
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiYWan5yVEFmN1kDMxYDN1EzMx8FMvwFOvwVOwETMwIzLcRnbl1GajFGd0F2LcRXZu5ibkN3YukGavw1LcpDc0RHaiojIsJye.gif)
//在onCreat函數中注冊要接受長按響應上下文菜單
//為兩個文本框注冊上下文菜單
this.registerForContextMenu(findViewById(R.id.longan2));
this.registerForContextMenu(findViewById(R.id.longan));
//添加長按菜單項
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
switch(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類似
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
setTitle(item.getTitle());
return super.onContextItemSelected(item);
}