-1

У меня есть ActionBar в моем приложении (через библиотеку совместимости v7), и он отлично работает. Однако, когда я вызываю DialogFragment, в меню переполнения появляется за диалоговым окном. Я ожидал, что ActionBar всегда будет на высоте. Излишне говорить, что это нарушает ввод в ActionBar.DialogFragment появляется поверх 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

Если я удалю эти флаги в 'onViewCreated,' я не могу полностью взаимодействовать с ActionBar – Paladine

+1

Это точка диалогового окна. Он держит фокус, пока вы что-то не сделаете с ним. Ваш пользовательский интерфейс будет запутанным и нестандартным, если вы делаете то, что делаете сейчас. Вам нужно переосмыслить это. – Kuffs

+0

Я действительно собираюсь использовать немодальный диалог, поэтому я буду исследовать «PopupWindow», чтобы увидеть, ведет ли он себя так, как я ожидаю – Paladine

Смежные вопросы