android开发菜单,Android学习指南之十六:Android菜单详解
Android用戶界面的組成除了View外,還包括菜單和對話框,本節我們先來學習一下菜單的使用方法。
菜單Menu是Android用戶界面中最常見的元素之一,使用非常頻繁。Android菜單主要分為三類:選項菜單(Options Menu)、上下文菜單(Context Menu)、子菜單(Submenu)。
一、選項菜單和子菜單
一個Menu對象代表一個菜單,Menu中可添加菜單項MenuItem,也可以添加子菜單SubMenu。
Java代碼@Override
publicvoidonCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
publicbooleanonCreateOptionsMenu(Menu?menu)?{
//?TODO?Auto-generated?method?stub
//添加性別子菜單
SubMenu?subMenuGender=menu.addSubMenu(MAIN_GROUP,?MENU_GENDER,0,"性別");
subMenuGender.setIcon(R.drawable.gender);
subMenuGender.setHeaderIcon(R.drawable.gender);
male=subMenuGender.add(GENDER_GROUP,MENU_GENDER_MALE,0,"男");//為子菜單添加選項
male.setChecked(true);//設置默認選項
subMenuGender.add(GENDER_GROUP,MENU_GENDER_FEMALE,0,"女");//為子菜單添加選項
subMenuGender.setGroupCheckable(GENDER_GROUP,true,true);//設置GENDER_GROUP組是可選的、互斥的
//添加興趣子菜單
SubMenu?subMenuHobby=menu.addSubMenu(MAIN_GROUP,?MENU_HOBBY,1,"愛好");
subMenuHobby.setIcon(R.drawable.hobby);
miaHobby[0]=subMenuHobby.add(HOBBY_GROUP,?MENU_HOBBY1,0,"游泳");
miaHobby[1]=subMenuHobby.add(HOBBY_GROUP,?MENU_HOBBY2,1,"籃球");
miaHobby[2]=subMenuHobby.add(HOBBY_GROUP,?MENU_HOBBY3,2,"跑步");
miaHobby[0].setCheckable(true);
miaHobby[1].setCheckable(true);
miaHobby[2].setCheckable(true);//設置為可多選
MenuItem?ok=menu.add(MAIN_GROUP,?MENU_OK,3,"確定");//為主菜單添加選項菜單
OnMenuItemClickListener?lsn=newOnMenuItemClickListener()?{
@Override
publicbooleanonMenuItemClick(MenuItem?item)?{
//?TODO?Auto-generated?method?stub
appendStateStr();
returntrue;
}
};
ok.setOnMenuItemClickListener(lsn);
ok.setAlphabeticShortcut('o');//給確定菜單設置字符快捷鍵
returntrue;
}
@Override
publicbooleanonOptionsItemSelected(MenuItem?item)?{
//?TODO?Auto-generated?method?stub
switch(item.getItemId()){
caseMENU_GENDER_MALE:
caseMENU_GENDER_FEMALE:
item.setChecked(true);
appendStateStr();
break;
caseMENU_HOBBY1:
caseMENU_HOBBY2:
caseMENU_HOBBY3:
item.setChecked(!item.isChecked());
appendStateStr();
break;
}
returntrue;
}
privatevoidappendStateStr()?{
//?TODO?Auto-generated?method?stub
String?result="您選擇的性別是:";
if(male.isChecked()){
result+="男";
}else{
result+="女";
}
String?hobbyStr="";
for(MenuItem?mi:miaHobby){
if(mi.isChecked()){
hobbyStr+=mi.getTitle()+"、";
}
}
if(hobbyStr.length()>0){
result+=",您的愛好為:"+hobbyStr.substring(0,hobbyStr.length()-1)+".\n";
}else{
resultresult=result+".\n";
}
Toast.makeText(mainActivity.this,?result,?Toast.LENGTH_LONG).show();
}
下面是此程序運行的結果,大家可以對照著代碼觀察效果:
二、上下文菜單
上下文菜單是注冊到某個View對象上的,如果一個View對象注冊了上下文菜單,用戶可通過長按該View對象彈出上下文菜單.
首先在onCreateContextMenu中為不同空間配置不同的上下文菜單:
Java代碼@Override
publicvoidonCreateContextMenu(ContextMenu?menu,?View?v,
ContextMenuInfo?menuInfo)?{
//?TODO?Auto-generated?method?stub
super.onCreateContextMenu(menu,?v,?menuInfo);
menu.setHeaderIcon(R.drawable.bird);
if(v==findViewById(R.id.editview01)){
menu.add(0,1,0,"菜單項1");
menu.add(0,2,0,"菜單項2");
menu.add(0,3,0,"菜單項3");
}elseif(v==findViewById(R.id.editview02)){
menu.add(0,4,0,"菜單項4");
menu.add(0,5,0,"菜單項5");
}
}
在onCreate方法中為兩個文本框注冊上下文菜單:
Java代碼@Override
publicvoidonCreate(Bundle?savedInstanceState)?{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
this.registerForContextMenu(findViewById(R.id.editview01));
this.registerForContextMenu(findViewById(R.id.editview02));
}
添加上下文菜單監聽事件:
Java代碼@Override
publicbooleanonContextItemSelected(MenuItem?item)?{
//?TODO?Auto-generated?method?stub
switch(item.getItemId()){
case1:
case2:
case3:
Toast.makeText(mainActivity.this,"這是第一個EditView的上下文菜單"+item.getTitle(),?Toast.LENGTH_LONG).show();
case4:
case5:
Toast.makeText(mainActivity.this,"這是第二個EditView的上下文菜單"+item.getTitle(),?Toast.LENGTH_LONG).show();
}
returnsuper.onContextItemSelected(item);
}
下面兩圖是Android上下文菜單實例的運行效果:
通過三種Android菜單的詳細講解,大家應該對菜單的使用有所了解了,在以后的Android開發過程中可以多熟悉下。
2012年7月23日
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的android开发菜单,Android学习指南之十六:Android菜单详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 驻留广播,Android
- 下一篇: 上网本 ubuntu debian an