【问题标题】:How can I disable the action bar when text is selected in a DialogFragment?在 DialogFragment 中选择文本时如何禁用操作栏?
【发布时间】:2013-01-31 15:48:07
【问题描述】:

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

我的第一次尝试涉及在MyOrgDialogFragment 中覆盖OnCreateDialog(),然后在其中覆盖onWindowStartingActionMode(),即:

@Override
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    return new Dialog(getActivity()) {
        @Override
        public ActionMode onWindowStartingActionMode(ActionMode.Callback callback)
        {
            return new ActionMode()
            {
                // [ All overrides empty ]
            }
        }
    };
}

这几乎可以工作:它可以防止出现操作栏,并且当我在编辑字段中长按时仍然会出现选择句柄(这很好),但是当我将焦点移到另一个编辑字段。我最终将“僵尸”选择句柄悬停在我做出选择的每个编辑字段上。

谁能给我指出一个更好的解决方案?

【问题讨论】:

  • 长按 EditText 时,您希望与它进行什么交互?或者你只是想阻止 ActionMode?​​span>
  • 我只想阻止 ActionMode:我不会用任何自定义操作替换它。

标签: android android-actionbar android-dialogfragment


【解决方案1】:

查看可用于TextView/EditTextsetCustomSelectionActionModeCallback 方法。如果您像这样使用空的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;
        }
    };

选择 ActionMode 将被阻止(切换字段时没有选择处理程序,实际上它们根本不会出现)。

【讨论】:

  • @prateek 我不这么认为,没有设置自定义 ActionMode 的方法。
  • 实际上我可以通过长按 Edittext 自定义上下文操作栏,但这不适用于 webview 中的选定文本,您有什么解决方法吗?
  • @prateek 我不能为此推荐一些东西。
  • 是的,它删除了动作模式,但它也会影响文本选择功能。工作不完美。
猜你喜欢
  • 2012-05-17
  • 2012-05-25
  • 1970-01-01
  • 2013-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-25
相关资源
最近更新 更多