我通过使用另一个Toolbar( actionModeToolbar) 解决了它,我可以将它放在布局中的任何位置并根据需要显示或隐藏它。
我在这里找到了一些有用的提示Toolbar:
https ://gist.github.com/gabrielemariotti/ae63392e1c70bc33af8b
这是我ActionMode使用Toolbarwith legacy创建的方式ActionMode.Callback。ActionMode为了部分兼容,我使用了类似于 system 的方法。请注意,这ActionMode.Callback不再是必需的,因为ActionMode不使用系统并且可以重构代码。
class ToolbarActionMode {
Toolbar actionModeToolbar;
ActionMode.Callback callback;
void startActionMode() {
actionModeToolbar.setNavigationOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
toolbarActionMode.finishActionMode();
}
});
actionModeToolbar.setOnMenuItemClickListener(new Toolbar.OnMenuItemClickListener() {
@Override public boolean onMenuItemClick(MenuItem menuItem) {
return callback.onActionItemClicked(null, menuItem);
}
});
// will create menu using inflateMenu(R.menu.menu_res)
callback.onCreateActionMode(null, null);
invalidate();
actionModeToolbar.setVisibility(View.VISIBLE);
}
void finishActionMode() {
callback.onDestroyActionMode(null);
actionModeToolbar.setVisibility(View.GONE);
}
void invalidate() {
// will update title + menu
callback.onPrepareActionMode(null, actionModeToolbar.getMenu());
}
void setTitle(CharSequence title) {
actionModeToolbar.setTitle(title);
}
void inflateMenu(int menuRes) {
actionModeToolbar.inflateMenu(menuRes);
}
}