Как сделать приложение полноэкранным, когда отображается FragmentDialog

я делаю свое приложение полноэкранным, но когда я создаю и показываю диалоговое окно фрагмента, оно выходит из полноэкранного режима

я пробую два способа, но у меня ничего не работает, проверьте код 1 и код 2

код 1 : Добавить adding <item name = "android:windowFullscreen">true</item> в мой стиль.xml код 2 : переопределить onShow в диалоговом окне фрагмента

    @Override
    public void show(FragmentManager manager, String tag)
    {
        getDialog().getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
        super.show(manager, tag);
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        getDialog().getWindow().getDecorView().setSystemUiVisibility(uiOptions);
        getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
    }

ничего не произошло, и мое приложение снова выходит из полноэкранного режима

Ваш класс расширяет DialogFragment?

Igmer Rodriguez 29.05.2019 22:53

@IgmerRodriguez да

agha_sass 30.05.2019 11:51
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
274
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуй это

@Override
    public void show(FragmentManager manager, String tag)
    {
        getDialog().getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
        super.show(manager, tag);
        int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
        getDialog().getWindow().getDecorView().setSystemUiVisibility(uiOptions);
        getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);

        // add these two line
        getDialog().requestWindowFeature(1);
        getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(0));
    }

я пробую это, не работает :( мое приложение снова останавливает полноэкранный режим

agha_sass 30.05.2019 12:53

попробуй это:

@Override
public void onResume() {
    // Get existing layout params for the window
    ViewGroup.LayoutParams params = getDialog().getWindow().getAttributes();
    // Assign window properties to fill the parent
    params.width = WindowManager.LayoutParams.MATCH_PARENT;
    params.height = WindowManager.LayoutParams.WRAP_CONTENT;
    getDialog().getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
    // Call super onResume after sizing
    super.onResume()

}

скопируйте и вставьте свой код, но проблема все равно появляется :( моя панель действий скрыта от style.xml, но эта чертова домашняя панель навигации появляется каждый раз, когда я открываю диалоговое окно фрагмента

agha_sass 30.05.2019 18:36
Ответ принят как подходящий

хорошо, у меня есть ответ сам этот фрагмент кода решает проблему:

getDialog().getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);
getDialog().getWindow().getDecorView().setSystemUiVisibility(getActivity().getWindow().getDecorView().getSystemUiVisibility());

getDialog().setOnShowListener(new DialogInterface.OnShowListener() {
    @Override
    public void onShow(DialogInterface dialog) {
        //Clear the not focusable flag from the window
        getDialog().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE);

        //Update the WindowManager with the new attributes (no nicer way I know of to do this)..
        WindowManager wm = (WindowManager) getActivity().getSystemService(Context.WINDOW_SERVICE);
        wm.updateViewLayout(getDialog().getWindow().getDecorView(), getDialog().getWindow().getAttributes());
    }
});

Другие вопросы по теме