首页 > 代码库 > ActionMode 的使用(参考)

ActionMode 的使用(参考)

    ActionMode是Android 3.0以后出现的Android 3.0以前,我们处理列表的长按事件经常使用Context Menu,Android3.0以后,我们有了新的选择:ActionMode。下图左边效果为Context Menu右边效果为ActionMode。


 1、实现ActionMode.Callback接口,并处理ActionMode的生命周期,ActionMode的生命周期如下图:

private ActionMode.Callback mCallback = new ActionMode.Callback() {


@Override

public boolean onPrepareActionMode(ActionMode mode, Menu menu) {

return false;

}


@Override

public void onDestroyActionMode(ActionMode mode) {

// TODO Auto-generated method stub

}


@Override

public boolean onCreateActionMode(ActionMode mode, Menu menu) {

MenuInflater inflater = mode.getMenuInflater();

inflater.inflate(R.menu.actionmode, menu);

return true;

}


@Override

public boolean onActionItemClicked(ActionMode mode, MenuItem item) {

boolean ret = false;

if (item.getItemId() == R.id.actionmode_cancel) {

mode.finish();

ret = true;

}

return ret;

}

};

2.当你点击触发时,应调用startActionMode()方法:

someView.setOnLongClickListener(new View.OnLongClickListener() {

    // Called when the user long-clicks on someView

    public boolean onLongClick(View view) {

        if (mActionMode != null) {

            return false;

        }

  

        mActionMode = getActivity().startActionMode(mActionModeCallback);

        view.setSelected(true);

        return true;

    }

});

简单完成后效果图大概这样,wKioL1R0GEbSXCkTAACOfluI4is717.jpg



但有的公司需求不满足于左上角的勾勾  ,  可自行删除这个勾勾,具体方法如下:

<style name="AppTheme" parent="android:Theme.Holo">
 <item name="android:actionModeCloseButtonStyle">@style/NoCloseButton</item>
</style>

<style name="NoCloseButton" parent="@android:style/Widget.ActionButton.CloseMode">
 <item name="android:visibility">gone</item>
</style>


ActionMode 的使用(参考)