Android Menu的应用
Menu
Android支持的Menu有以下几种:
1.常规菜单
2.子菜单
3.上下文菜单
4.图标菜单
5.辅助菜单
6.交替菜单
菜单不仅作为Java对象,还表示为资源,我们可以通过XML制作自己的菜单,然后通过资源id来使用.
每个Activity都能拥有一个菜单(android.view.Menu),而这个菜单中能自由的扩展子菜单(android.view.SubMenu)或包含菜单项(android.view.MenuItem).
回调函数:onCreateOptionsMenu()和onOptionsItemSelected()分别用于菜单的创建和菜单项的选择.
菜单的创建
@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu);//调用父类方法创建系统菜单 menu.add(0, 1, 0, "add"); menu.add(0, 2, 1, "item"); menu.add(0, 3, 2, "del"); return true;//返回true菜单才能显示 }
@Override public boolean onOptionsItemSelected(MenuItem item) { switch(item.getItemId()){ case 1: return true;//返回true跳出处理 case 2: return true; } return super.onOptionsItemSelected(item);//使用父类的处理方法,返回false }
new OnMenuItemClickListener(){ @Override public boolean onMenuItemClick(MenuItem item) { //do something return true; } };
TextView tv = (TextView) findViewById(R.id.myText); registerForContextMenu(tv);//为视图tv注册上下文菜单
@Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("My Context Menu"); menu.add(1, 1, 1, "项目1"); }
@Override public boolean onContextItemSelected(MenuItem item) { if(item.getItemId()==1){ Toast.makeText(this, "item id : 1", 1000).show(); return true; } return super.onContextItemSelected(item); }
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android" > <group android:id="@+id/group1"> <item android:id="@+id/item1" android:orderInCategory="1" android:title="item1"/> <item android:id="@+id/item2" android:orderInCategory="1" android:title="item2"/> </group> </menu>
@Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu);//调用父类方法创建系统菜单 MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.mymenu, menu); return true;//返回true菜单才能显示 }