Contextual ActionMode
Contextual action mode 是系统对ActionMode的实现,专门用于用户点击Contextual Actions的交互,如果你开发针对Android 3.0以上的应用时,应该考虑使用Contextual ActionMode 展示Contextual Actions ,而不是用Floating context menu.
实现ActionMode.Callback接口
private ActionMode.Callback mActionModeCallback = new ActionMode.Callback() {
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
//加载actions
MenuInflater inflater = mode.getMenuInflater();
inflater.inflate(R.menu.menu_delete, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
//当actions的item被点击时回掉
return false;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
//当action mode销毁时的回掉
mActionMode = null;
}
};
调用startActionMode(Callback callback);
在ListView的item长按回调中或者合适的时候调用startActionMode(mActionModeCallback),该方法会返回一个ActionMode实例,在完成操作后,当用该实例的finish()方法用来销毁。
一些注意
如果你当前activity中存在Appbar或者toolbar,可能出现两个顶部栏的情况。这时候你需要在Activity的theme中添加两个设置项。
<item name="android:windowActionModeOverlay">true</item>
//针对使用Appcompat toolbar的情况
<item name="windowActionModeOverlay">true</item>
网友评论