Android Menu初步学习

来源:互联网 发布:天音淘宝破解版 编辑:程序博客网 时间:2024/06/15 12:05

Android 为我们提供了三种menu类型:Options Menu 、Contextual Menu、 Popup Menu。。

Options Menu

Options Menu 是最常见也是最简单的一种。通常当我们按Menu键的时候,在android窗口底部出现的就是一个Options Menu。它主要有两个方法:

 onCreateOptionsMenu()和 onOptionsItemSelected()方法。

 在onCreateOptionsMenu()方法中,我们主要是将menu的xml文件转化成Object,也可以自己使用add方法,添加menu的Item。

@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.group_menu, menu);return true;}
 在onOptionsItemSelected()方法中,我们去判断哪个选择了哪个按钮,然后可以进行对应的自定义操作。

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {switch(item.getItemId()){case R.id.action_settings:Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();return true;case R.id.action_help:Toast.makeText(MainActivity.this, item.getTitle(), Toast.LENGTH_SHORT).show();return true;default:return super.onOptionsItemSelected(item);}}

    当你需要更新你的menu的时候,你需要调用invalidateOptionsMenu()方法,让系统去调用 onPrepareOptionsMenu().

Contextual Menu

   我们可以为任何一个View 提供一个Contextual Menu,它可以影响这个View中特定的Item 。比如:当我们点击ListView或者GridView中的某个Item 的时候,可以生成一个Context Menu。利用这个Context Menu上,我们可以对所点击的Item进行诸如修改,删除或者其他等操作。首先我们需要为某个View 注册ContextMenu,这样我们View上的数据才能关联到这个ContextView。具体方法: registerForContextMenu(someView)。

 当我们注册的View接收到一个long-click事件的时候,系统就会调用onCreateContextMenu() 方法,生成我们的Context Menu.

@Overridepublic void onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo) {;super.onCreateContextMenu(menu, v, menuInfo);getMenuInflater().inflate(R.menu.context_menu, menu);}
  我们实现onContextItemSelected()方法。对相应的item进行自定义的操作。

@Overridepublic boolean onContextItemSelected(MenuItem item) {AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();switch(item.getItemId()){case R.id.action_edit:display(String.valueOf(info.id));return true;case R.id.action_delete:display(String.valueOf(info.id));return true;default:return super.onContextItemSelected(item);}}
以上我么所说的是a float context menu,即菜单式浮在我们的View上的。下节会将如何使用Contextual action mode,即把菜单添加到Action Bar中。Options Menu只需要在xml文件中android:showAsAction="ifRoom",就可以将菜单显示在Action Bar中。

Popup Menu

   Popup Menu是一种根植于某个View的菜单,要么出现在View 的下方,要么出现在View的上方。它可以作为一个下拉列表使用,也可以为某个命令或事件提供参数选择或者备用选项。这里,我们首先在someView(某个View)的XML定义里添加android:onClick="showPopup"。同时添加showPopup函数。

public void showPopup(View v){PopupMenu popup = new PopupMenu(this,v);popup.getMenuInflater().inflate(R.menu.context_menu, popup.getMenu());popup.setOnMenuItemClickListener(new OnMenuItemClickListener(){@Overridepublic boolean onMenuItemClick(MenuItem item) {switch(item.getItemId()){case R.id.action_edit:display("edit");return true;case R.id.action_delete:display("delete");return true;default:return false;}}});popup.show();}
同时在showPopup函数中添加OnMenuItermClickListener监听onMenuItemClick事件,系统回调 onMenuItemClick()方法,其中你可以做一些自定义操作。


原创粉丝点击