溢出按钮强制操作模式完成

mtu*_*rco 8 android android-actionbar

我有一个EditText,我希望用户能够选择一些文本并对所选文本应用一些基本格式(粗体,斜体等).不过,我仍然希望显示标准的复制,剪切,粘贴选项.我在Android文档中的某处读到要执行此操作,您应该在EditText上调用setCustomSelectionActionModeCallback()并将其传递给ActionModeCallback(),这就是我所做的.这是我的代码:

在我的活动的onCreate()方法中:

myEditText.setCustomSelectionActionModeCallback(new TextSelectionActionMode());
Run Code Online (Sandbox Code Playgroud)

回调声明:

private class TextSelectionActionMode implements ActionMode.Callback {
    @Override
    public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
        return false;
    }

    @Override
    public boolean onCreateActionMode(ActionMode mode, Menu menu) {
        menu.add("Bold");
        return true;
    }

    @Override
    public void onDestroyActionMode(ActionMode mode) {
    }

    @Override
    public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当我点击溢出按钮(访问我的"Bold"菜单项)时,ActionMode会立即关闭.如果我将其设置为始终显示为操作,请使用以下命令:

MenuItem bold = menu.add("Bold");
bold.setShowAsActionFlags(MenuItem.SHOW_AS_ACTION_ALWAYS);
Run Code Online (Sandbox Code Playgroud)

它工作正常,我可以点击它(虽然它显然什么也没做).我在这里错过了什么?

编辑:只是想添加我遇到完全相同的问题,如果我实际上膨胀菜单而不是以编程方式添加菜单项.但是,如果我强迫它始终显示为动作,问题就会消失.

小智 3

这是框架问题。如果textview收到“焦点改变”事件,则textview停止操作模式。当显示溢出弹出窗口时,textview 失去焦点。