Menu菜单
Posted 嘉禾世兴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Menu菜单相关的知识,希望对你有一定的参考价值。
选项菜单
1.菜单的生命周期
* onCreateOptionsMenu() 选项菜单创建时调用(启动Activity时调用 只调用1次) * onPrepareOptionsMenu() 选项菜单准备时调用(点击Menu键时调用 调用多次) * onOptionsItemSelected() 选项菜单项选中时调用 * onOptionsMenuClosed() 选项菜单关闭时
2.onCreateOptionsMenu()方法
在onCreateOptionsMenu()中添加菜单项,建议使用
menu.add(1, Menu.FIRST, Menu.FIRST, "xx"); menu.add(1, Menu.FIRST+1, Menu.FIRST+1, "xx"); menu.add(1, Menu.FIRST+2, Menu.FIRST+2, "xx");
添加子菜单
SubMenu sub = menu.addSubMenu(1, Menu.FIRST+4, Menu.FIRST+4, "xxx");
在子菜单中添加菜单项
sub.add(2, Menu.FIRST+5, Menu.FIRST+5, "xx"); sub.add(2, Menu.FIRST+6, Menu.FIRST+6, "xx"); sub.add(2, Menu.FIRST+7, Menu.FIRST+7, "xx");
3.onOptionsItemSelected()方法
在onOptionsItemSelected()中进行菜单项选中事件的操作 比如
int id = item.getItemId(); switch(id) { case Menu.FIRST: ... break; case Menu.FIRST+1: ... break; }
例:
@Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(1, Menu.FIRST, Menu.FIRST, "红"); menu.add(1, Menu.FIRST + 1, Menu.FIRST + 1, "黄");// 菜单项 menu.add(1, Menu.FIRST + 2, Menu.FIRST + 2, "蓝"); // 菜单项 menu.add(1, Menu.FIRST + 3, Menu.FIRST + 3, "绿"); // 菜单项 // 添加子菜单 SubMenu sub = menu.addSubMenu(1, Menu.FIRST + 4, Menu.FIRST + 4, "更多"); // 子菜单 sub.add(2, Menu.FIRST + 5, Menu.FIRST + 5, "其他1"); sub.add(2, Menu.FIRST + 6, Menu.FIRST + 6, "其他2"); sub.add(2, Menu.FIRST + 7, Menu.FIRST + 7, "其他3"); // Inflate the menu; this adds items to the action bar if it is present. //MenuInflater inflater = getMenuInflater(); //inflater.inflate(R.menu.main, menu); return true; } @Override public boolean onPrepareOptionsMenu(Menu menu) { return super.onPrepareOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in androidManifest.xml. int id = item.getItemId(); switch (id) { case Menu.FIRST: textview.setTextColor(Color.RED); break; case Menu.FIRST + 1: textview.setTextColor(Color.YELLOW); break; case Menu.FIRST + 2: textview.setTextColor(Color.BLUE); break; case Menu.FIRST + 3: textview.setTextColor(Color.GREEN); break; case Menu.FIRST + 5: textview.setTextColor(Color.CYAN); break; case Menu.FIRST + 6: textview.setTextColor(Color.GRAY); break; case Menu.FIRST + 7: textview.setTextColor(Color.MAGENTA); break; } return super.onOptionsItemSelected(item); } @Override public void onOptionsMenuClosed(Menu menu) { super.onOptionsMenuClosed(menu); }
上下文菜单
1.生命周期
onCreateContextMenu();//创建菜单时调用 onContextItemSelected();//选中上下文时调用 onContextMenuClosed();//关闭菜单时调用
例:
registerForContextMenu(textview); @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { switch (v.getId()) { case R.id.textview: menu.add(3, Menu.FIRST+5, Menu.FIRST+5, "红"); menu.add(3, Menu.FIRST+6, Menu.FIRST+6, "黄"); SubMenu submenu = menu.addSubMenu(3, Menu.FIRST+7, Menu.FIRST+7, "其他"); submenu.add(4, Menu.FIRST+8, Menu.FIRST+8, "蓝"); submenu.add(4, Menu.FIRST+9, Menu.FIRST+9, "绿"); break; } super.onCreateContextMenu(menu, v, menuInfo); } @Override public boolean onContextItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case Menu.FIRST+5: textview.setBackgroundColor(Color.RED); break; case Menu.FIRST+6: textview.setBackgroundColor(Color.YELLOW); break; case Menu.FIRST+8: textview.setBackgroundColor(Color.BLUE); break; case Menu.FIRST+9: textview.setBackgroundColor(Color.GREEN); break; } return super.onContextItemSelected(item); } @Override public void onContextMenuClosed(Menu menu) { // TODO Auto-generated method stub super.onContextMenuClosed(menu); }
以上是关于Menu菜单的主要内容,如果未能解决你的问题,请参考以下文章