下面列出了android.view.ActionMode#TYPE_FLOATING 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public void onDestroyActionMode(ActionMode mode) {
mActionModeStateCallback.onActionModeStateChanged(mode, false);
mCurrentActionMode = null;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M ||
mode.getType() != ActionMode.TYPE_FLOATING)
clearSelection();
}
@TargetApi(Build.VERSION_CODES.M)
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
currentActionMode = mode;
currentActionModeMenu = menu;
setSelectionMode(true);
int pasteResId = ResourceUtils.getSystemSelectionIcon(getContext(), "actionModePasteDrawable",
"ic_menu_paste_holo_dark");
ActionIconSet set = new ActionIconSet(getContext());
int flags = MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT;
if (C.API_MARSHMALLOW && mode.getType() == ActionMode.TYPE_FLOATING) {
int order = 1; // Only "cut" menu item uses this order which doesn't present in non-editable TextView
if (replyable != null) {
menu.add(0, android.R.id.button1, order, R.string.action_quote)
.setIcon(pasteResId).setShowAsAction(flags);
}
menu.add(0, android.R.id.button2, order, R.string.action_browser)
.setIcon(set.getId(R.attr.actionForward)).setShowAsAction(flags);
} else {
if (replyable != null) {
menu.add(0, android.R.id.button1, 0, R.string.action_quote).setIcon(pasteResId)
.setShowAsAction(flags);
}
menu.add(0, android.R.id.button2, 0, R.string.action_browser).setIcon(set.getId(R.attr.actionForward))
.setShowAsAction(flags);
}
// Stop selection fixation after creating action mode
restoreSelectionRunnable = null;
return true;
}
private static boolean isFloatingActionMode(ActionMode mode) {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return false;
return mode.getType() == ActionMode.TYPE_FLOATING;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
// If the created ActionMode isn't actually floating, abort creation altogether.
if (mode.getType() != ActionMode.TYPE_FLOATING) return false;
return mCallback.onCreateActionMode(mode, menu);
}
private boolean canHideActionMode() {
return supportsFloatingActionMode()
&& isActionModeValid()
&& mActionMode.getType() == ActionMode.TYPE_FLOATING;
}