实现菜单之ActionMode

来源:互联网 发布:微信电影网站源码 编辑:程序博客网 时间:2024/06/05 08:36

ActionMode是临时占用actionBar的位置来展示菜单的一种实现菜单的方式
这里写图片描述

创建方法:

  • 1.在res/menu/下创建一个menu
<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android">    <item        android:id="@+id/action_mode1"        android:icon="@drawable/color"        android:orderInCategory="1"        android:title="mode1"/>    <item        android:id="@+id/action_mode2"        android:icon="@mipmap/ic_launcher_round"        android:orderInCategory="2"        android:title="mode2"/></menu>
  • 2.创建一个类MyActionModeCallback来实现ActionMode.CallBack的方法
public class MyActionModeCallBack implements android.view.ActionMode.Callback {      //系统开始创建actionMode的时候调用        @Override        public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {            mode.getMenuInflater().inflate(R.menu.action_mode, menu);            return true;        }       //系统开始渲染actionmode的窗体之前调用        @Override        public boolean onPrepareActionMode(android.view.ActionMode mode, Menu menu) {            return false;        }        //当actionMode中menu的item点击时调用        @Override        public boolean onActionItemClicked(android.view.ActionMode mode, MenuItem item) {            mode.finish()//关闭ActionMode的方法            return true;            }        }        //actionMode退出的时候调用        @Override        public void onDestroyActionMode(android.view.ActionMode mode) {             mode=null;        }    }
  • 3.开启和退出actionMode
 ActionMode mActionMode = startActionMode(myActionModeCallBack);//将上面实现了回调接口的类传递进去 mActionMode.finish();//退出actionMode会调用onDestroyActionMode()
  • 4.为listView或者GridView 等absListView 类注册开启ActionMode
  listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);  listView.setMultiChoiceModeListener(new ListView.MultiChoiceModeListener() {      @Override      public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {                //业务逻辑(更新menu的Item标题等等)            }      @Override      public boolean onCreateActionMode(ActionMode mode, Menu menu) {                mode.getMenuInflater().inflate(R.menu.action_mode, menu);                return true;            }      @Override      public boolean onPrepareActionMode(ActionMode mode, Menu menu) {                return false;            }      @Override      public boolean onActionItemClicked(ActionMode mode, MenuItem item) {              //actionMode中menu的item点击事件的逻辑                return false;            }      @Override      public void onDestroyActionMode(ActionMode mode) {            }      });
原创粉丝点击