Options Menu
创建选项菜单的步骤:
1、覆盖Activity 的onCreateOptionMenu(Menu menu)方法,当菜单第一次被打开时调用
2、调用Menu 的add( )方法添加菜单项(MenuItem),同时可以调用MenuItem 的setIcon( )方法来为菜单项设置图标
3、当菜单项(MenuItem)被选择时,覆盖Activity 的onOptionsItemSelected(MenuItem item)来响应事件
public class MainActivity extends Activity { // 定义一些变量,后面直接拿来用 private static final int START_ITEM = Menu.FIRST; private static final int OVER_ITEM = Menu.FIRST + 1; private static final int SET_ITEM1 = Menu.FIRST + 2; private static final int SET_ITEM2 = Menu.FIRST + 3; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public boolean onCreateOptionsMenu(Menu menu) { // 添加菜单项(组ID,菜单项ID,排序,标题) menu.add(0, START_ITEM, 100, "开始"); menu.add(0, OVER_ITEM, 200, "结束"); // 添加子菜单 SubMenu sub1 = menu.addSubMenu("设置"); sub1.add(1, SET_ITEM1, 300, "设置声音"); sub1.add(1, SET_ITEM2, 400, "设置桌面"); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case START_ITEM: // 提示信息 Toast.makeText(this, "开始", Toast.LENGTH_SHORT).show(); break; case OVER_ITEM: // 提示信息 Toast.makeText(this, "结束", Toast.LENGTH_SHORT).show(); break; case SET_ITEM1: // 提示信息 Toast.makeText(this, "声音设置", Toast.LENGTH_SHORT).show(); break; case SET_ITEM2: // 提示信息 Toast.makeText(this, "设置桌面", Toast.LENGTH_SHORT).show(); break; default: break; } return super.onOptionsItemSelected(item); } }
Context Menu
顾名思义,与上下文(环境)有关。思想类似于Windows中的右键单击弹出的快捷菜单。操作时需要长时间按住某个东东不放。
创建上下文菜单的步骤:
1、覆盖Activity 的onCreateContextMenu(Menu menu)方法,调用Menu的add()方法添加菜单项(MenuItem)。
2、覆盖Activity 的onContextItemSelected(MenuItem iitem)来响应事件。
3、调用registerForContextMenu( )方法来为视图注册上下文菜单。
public class MainActivity2 extends Activity { private Button btn1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main2); // 获取BUTTON对象 btn1 = (Button) findViewById(R.id.button1); //在button上注册上下文菜单 registerForContextMenu(btn1); } // 创建上下文菜单的事件方法 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { super.onCreateContextMenu(menu, v, menuInfo); getMenuInflater().inflate(R.menu.menu_main2, menu); } // 上下文菜单项触发事件 @Override public boolean onContextItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.start: Toast.makeText(this, "开始。。。", Toast.LENGTH_SHORT).show(); break; case R.id.over: Toast.makeText(this, "结束。。。", Toast.LENGTH_SHORT).show(); break; default: break; } return super.onContextItemSelected(item); } }
Popup Menu
弹出式菜单.
弹出菜单是停靠在一个View上的一个模式菜单。如果View对象下方有空间,那么弹出菜单将显示在停靠对象的下方,否则会显示在上方。这是非常有用的。
public class MainActivity3 extends Activity implements OnMenuItemClickListener{ @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main3); } public void showPopupMenu(View v){ //创建弹出式菜单对象(最低版本11) PopupMenu popup = new PopupMenu(this,v); //获取菜单填充器 MenuInflater inflater = popup.getMenuInflater(); //填充菜单 inflater.inflate(R.menu.menu_main3, popup.getMenu()); //设置菜单项的单击事件 popup.setOnMenuItemClickListener(this); popup.show(); } //弹出式菜单的单击事件处理 @Override public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()) { case R.id.copy: Toast.makeText(this, "复制。。。", Toast.LENGTH_LONG).show(); break; case R.id.del: Toast.makeText(this, "删除。。。", Toast.LENGTH_LONG).show(); break; default: break; } return false; } }
我是天王盖地虎的分割线
源代码:http://pan.baidu.com/s/1dD1Qx01
menu学习.zip
转载请注明出处:http://www.cnblogs.com/yydcdut
Android -- Options Menu,Context Menu,Popup Menu,布布扣,bubuko.com