Menu comments

来源:互联网 发布:pe windows 编辑:程序博客网 时间:2024/05/22 14:42

1.  3 种menu

Option Menu, 显示在action bar上,不支持checked/radio button

Contextual Menu: 适用于listview/gridview 对其中的item操作

Contextual Menu contextual action mode : 占action bar的空间,在listview中可以一次对多个list item进行操作。

PopupMenu: 主要提供更多的菜单项,不应该更改view的内容

2. 菜单的定义在xml文件中,菜单有以下3中基本元素

  1. <menu>
  2. <item>
  3. <group>

3. Option menu

由于action bar的空间有限,可以指定在action bar的菜单项,其他未指定的都放在action overflow 中

Activity的

  1. onCreateOptionsMenu() 创建菜单
  2. onPrepareOptionsMenu()更新菜单
  3. invalidateOptionsMenu() 指示平台更新菜单
  4. onOptionsItemSelected() 处理菜单的点击事件


4. Contextual menu

建议使用contextual action bar, 把action item放在action bar上。

floating contextual menu简单,需要以下3个点

  1. 在activity中调用registerForContextMenu(View) 指示activity 会创建contextual menu
  2. onCreateContextMenu() 在需要时创建menu
  3. onContextItemSelected()处理菜单的点击事件

contextual action bar

public ActionMode startActionMode (ActionMode.Callback callback, int type)

ActionMode.Callback 的接口函数:

  • onCreateActionMode(ActionMode, Menu) once on initial creation
  • onPrepareActionMode(ActionMode, Menu) after creation and any time theActionMode is invalidated
  • onActionItemClicked(ActionMode, MenuItem) any time a contextual action button is clicked
  • onDestroyActionMode(ActionMode) when the action mode is closed

ListView or GridView的批量数据处理

listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);

AbsListView.setItemChecked(int position, boolean value)

 listView.setMultiChoiceModeListener(new MultiChoiceModeListener())
AbsListView.MultiChoiceModeListener 接口的处理函数 implements               ActionMode.Callback

  • onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked)

5. Popup Menu

    PopupMenu popup = new PopupMenu(this, (View )v);    MenuInflater inflater = popup.getMenuInflater();    inflater.inflate(R.menu.actions, popup.getMenu());    popup.show();
Popup Menu listner:

interface android.widget.PopupMenu.OnMenuItemClickListener

  • onMenuItemClick(MenuItem item)


interface android.widget.PopupMenu.OnDismissListener

  • onDismiss(PopupMenu menu)

6. Menu Item可以按组处理组内的item可单选,多选

7. 自动根据intent加menuitem

需要在被加的activity支持CATEGORY_ALTERNATIVEand/or CATEGORY_SELECTED_ALTERNATIVE


0 0
原创粉丝点击