Android之路-android菜单简介

                                                                             Android菜单简介

Android提供了三种菜单:

options menucontext menusub menu

 

options menu就是通过按home键来显示

context menu需要在view上按上2s后显示。

这两种menu都有可以加入子菜单,子菜单不能种不能嵌套子菜单。

 

options menu

options menu最多只能在屏幕最下面显示6个菜单选项,称为icon menuicon menu不能有checkable选项。

多余6的会以more icon menu来调出,成为expanded menuoptions menu通过activityonCreateOptionsMenu来生成,这个函数只会在menu第一次生成时调用。

任何想改变options menu的想法只能在onPrepareOptionsMenu来实现,这个函数会在menu显示前调用。onOptionsItemSelected 处理选中的菜单项。

 

context menu

context menu是跟某个具体的view绑定在一起,在activity种用registerForContextMenu来为某个view注册context menucontext menu在显示前都会调用onCreateContextMenu来生成menuonContextItemSelected选中的菜单项。

 

android还提供了对菜单项进行分组的功能,可以把相似功能的菜单项分成同一个组,这样就可以通过调用setGroupCheckablesetGroupEnabled,setGroupVisible来设置菜单属性,而无须单独设置。

 

options menu利用XML文件定义选项菜单

a) options menu通过activityonCreateOptionsMenu来生成

b) 这个函数只会在menu第一次生成时调用。

i. 任何想改变options menu的想法只能在onPrepareOptionsMenu来实现,这个函数会在menu显示前调用。

onOptionsItemSelected 用来处理选中的菜单项。

 

代码及演示:

 

带单选或复选的子菜单

 public boolean onCreateOptionsMenu(Menu menu){
     
     MenuInflater inflater = this.getMenuInflater();
     inflater.inflate(R.menu.options_menu, menu);
     
     SubMenu submenu  =  menu.addSubMenu(1,SUBMENU,1,"显示选项");
     submenu.add(20,SUBITEM1,1,"仅显示有电话号码的联系人");
     submenu.getItem(0).setCheckable(true);//复选子菜单


 

    SubMenu submenu2  =  menu.addSubMenu(1,SUBMENU,1,"导入/导出");
     submenu2.add(20,SUBITEM3,1,"从SIM卡导入");
     submenu2.add(20,SUBITEM4,1,"从SD卡导入");
     submenu2.add(20,SUBITEM5,1,"导出到SD卡");
     submenu2.add(20,SUBITEM6,1,"分享可见的联系人");
     submenu2.add(20,SUBITEM7,1,"退出");


     

     SubMenu submenu4  =  menu.addSubMenu(1,SUBMENU,1,"账户");
     submenu4.add(20,SUBITEM8,1,"背景数据");
     submenu4.add(20,SUBITEM9,1,"自动同步");
     submenu4.setGroupCheckable(20, true,true);//单选子菜单


 

 

 上下文子菜单

public class ContextMenuActivity extends Activity {

 ContextMenu menu = null;

 protected void onCreate(Bundle savedInstanceState) {

 super.onCreate(savedInstanceState);

 setContentView(R.layout.main);

 TextView tv = (TextView) this.findViewById(R.id.textView);

 this.registerForContextMenu(tv);

 }

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo){

 menu.setHeaderTitle("上下文菜单");

menu.setHeaderIcon(R.drawable.ic_launcher);

 getMenuInflater().inflate(R.menu.context_menu, menu); 

this.menu = menu;

 }

 public boolean onContextItemSelected(MenuItem item) {

 switch (item.getItemId()) {

 case R.id.subitem1:

 Toast.makeText(this, "subitem1", 

Toast.LENGTH_SHORT).show();

 break;

 case R.id.subitem2:

 Toast.makeText(this, "subitem2", 

Toast.LENGTH_SHORT).show();

 break;

 case R.id.subitem3:

 Toast.makeText(this, "subitem3", 

Toast.LENGTH_SHORT).show();

 break;

 }

 return true;

 }

}


 

sub Menu
onCreateOptionsMenu内代码改成如下代码,即可实现submenu

 

你可能感兴趣的:(Android之路-android菜单简介)