Android 在DialogFragment中选择文本时,如何禁用操作栏?
我正在开发一个ICS 4.0.3平板电脑应用程序,其中广泛使用DialogFrament。当用户在对话框片段的文本编辑器中长按时,我需要防止复制/粘贴操作栏出现在屏幕顶部。幸运的是,我们有自己的扩展DialogFragment的基类,称之为MyOrgDialogFragment,我们所有的对话框片段都基于它,所以如果需要,我可以修改它 我的第一次尝试涉及重写MyOrgDialogFragment中的OnCreateDialog,然后重写其中的OnWindowsStartingActionMode,即:Android 在DialogFragment中选择文本时,如何禁用操作栏?,android,android-actionbar,android-dialogfragment,Android,Android Actionbar,Android Dialogfragment,我正在开发一个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我不能推荐任何方法。是的,它会删除操作模式,但也会影响文本选择功能。工作不完美。