我通过使用另一个Toolbar
( actionModeToolbar
) 解决了它,我可以将它放在布局中的任何位置并根据需要显示或隐藏它。
我在这里找到了一些有用的提示Toolbar
:
https ://gist.github.com/gabrielemariotti/ae63392e1c70bc33af8b
这是我ActionMode
使用Toolbar
with 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);
}
}