Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在DialogFragment中选择文本时,如何禁用操作栏?_Android_Android Actionbar_Android Dialogfragment - Fatal编程技术网

Android 在DialogFragment中选择文本时,如何禁用操作栏?

Android 在DialogFragment中选择文本时,如何禁用操作栏?,android,android-actionbar,android-dialogfragment,Android,Android Actionbar,Android Dialogfragment,我正在开发一个ICS 4.0.3平板电脑应用程序,其中广泛使用DialogFrament。当用户在对话框片段的文本编辑器中长按时,我需要防止复制/粘贴操作栏出现在屏幕顶部。幸运的是,我们有自己的扩展DialogFragment的基类,称之为MyOrgDialogFragment,我们所有的对话框片段都基于它,所以如果需要,我可以修改它 我的第一次尝试涉及重写MyOrgDialogFragment中的OnCreateDialog,然后重写其中的OnWindowsStartingActionMode

我正在开发一个ICS 4.0.3平板电脑应用程序,其中广泛使用DialogFrament。当用户在对话框片段的文本编辑器中长按时,我需要防止复制/粘贴操作栏出现在屏幕顶部。幸运的是,我们有自己的扩展DialogFragment的基类,称之为MyOrgDialogFragment,我们所有的对话框片段都基于它,所以如果需要,我可以修改它

我的第一次尝试涉及重写MyOrgDialogFragment中的OnCreateDialog,然后重写其中的OnWindowsStartingActionMode,即:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    return new Dialog(getActivity()) {
        @Override
        public ActionMode onWindowStartingActionMode(ActionMode.Callback callback)
        {
            return new ActionMode()
            {
                // [ All overrides empty ]
            }
        }
    };
}
这几乎起作用了:它阻止了动作栏的出现,当我长按某个编辑字段时,选择手柄仍然会出现,这很好,但当我将焦点移动到另一个编辑字段时,选择手柄不会正确地消失。最后,僵尸选择手柄悬停在我选择的每个编辑字段上

有人能告诉我一个更好的解决方案吗?

看看可以在TextView/EditText上使用的方法。如果使用空的ActionMode.Callback,如下所示:

private ActionMode.Callback mModeCallback = new Callback() {

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // TODO Auto-generated method stub

        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            // TODO Auto-generated method stub
            return false;
        }
    };
切换字段时,选择操作模式将被阻止,没有剩余的选择处理程序,事实上它们根本不会出现

看看可在TextView/EditText上使用的方法。如果使用空的ActionMode.Callback,如下所示:

private ActionMode.Callback mModeCallback = new Callback() {

        @Override
        public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void onDestroyActionMode(ActionMode mode) {
            // TODO Auto-generated method stub

        }

        @Override
        public boolean onCreateActionMode(ActionMode mode, Menu menu) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
            // TODO Auto-generated method stub
            return false;
        }
    };

切换字段时,选择操作模式将被阻止,没有剩余的选择处理程序,事实上它们根本不会出现

长时间单击EditText时,您希望与它进行什么交互?或者您只想阻止ActionMode?我只想阻止ActionMode:我不会用任何自定义操作替换它。长时间单击EditText时,您希望与它有什么交互?或者您只是想阻止ActionMode?我只是想阻止ActionMode:我不会用任何自定义操作替换它。@prateek我不这么认为,没有设置自定义ActionMode的方法。实际上,我可以通过长时间单击Edittext自定义上下文操作栏,但这对webview中的选定文本不起作用,你对此有什么解决方法吗?@prateek我不能推荐这样的方法。是的,它会删除动作模式,但也会影响文本选择功能。工作不完美。@prateek我不这么认为,没有一种方法可以设置自定义操作模式。实际上,我可以通过长时间单击Edittext来自定义上下文操作栏,但这对webview中的选定文本不起作用,您对此有何解决方法?@prateek我不能推荐任何方法。是的,它会删除操作模式,但也会影响文本选择功能。工作不完美。