实现菜单之ActionMode

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) {

            }
      });
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值