DialogFragment出现在ActionBar的顶部

时间:2013-12-15 14:38:57

标签: android android-fragments android-actionbar android-dialogfragment android-actionbar-compat

我的app中有一个ActionBar(通过v7 compat库),它运行得很好。当我调出DialogFragment时,溢出菜单会出现后面的对话框。我期待ActionBar始终处于领先地位。不用说,这会破坏对ActionBar的输入。

这是显示片段的代码 - 非常标准的东西

CChildDialog dlg = createDialog(id,args);
                if (dlg != null) {
                    // now display the fragment!

                    // DialogFragment.show() will take care of adding the fragment
                    // in a transaction.  We also want to remove any currently showing
                    // dialog, so make our own transaction and take care of that here.
                    FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
                    Fragment prev = getSupportFragmentManager().findFragmentByTag(dialogTag);
                    if (prev != null) {
                        ft.remove(prev);
                    }
                    // Create and show the dialog.
                    dlg.show(ft, dialogTag);
                }

除了启用背景点击之外,我的对话框类没有做任何奇怪的事情:

@Override
    public void onViewCreated(final View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        Window dialogWindow = getDialog().getWindow();

        // Make the dialog possible to be outside touch
        dialogWindow.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
        dialogWindow.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
    }

Screen Capture

1 个答案:

答案 0 :(得分:1)

相反,你的对话类会做很奇怪的事情。您关闭使其成为对话框的标志。

对话框显示在您的活动之上(包括您的操作栏),因此操作栏中的菜单显示在对话框窗口后面是正常的。您已关闭对话框的模态性质,否则您将无法激活菜单。