Как настроить отображение диалога в полноэкранном режиме? [закрыто]


129

У меня есть GridView, и я хочу внедрить диалоговое окно, в котором выбранное мной изображение должно отображаться в полноэкранном режиме.

так как я могу сделать так, чтобы диалог отображался в полноэкранном режиме? Спасибо!


2
Если вы хотите использовать ПОЛНЫЙ ЭКРАН Dialog, почему бы просто не использовать значение ACTION_VIEW Intentпо умолчанию для файлов изображений?
Will Tate

извините, я имею в виду почти полный экран или полное изображение
user790156

3
В сочетании с ответом на willytate, если вам нужно диалоговое окно, используйте android.R.style.Theme_Translucent_NoTitleBar_Fullscreen в теме
ingsaurabh


3
@MartinPfeffer У меня также есть предложение для будущего пользователя, но вопрос закрыт. Эндрю Барбер не из сообщества Android. Это действительно простой вопрос, который всегда интересует новых разработчиков Android. этот вопрос должен быть снова открыт для лучших ответов и будущих пользователей
Абхишек Сингх

Ответы:


229

пытаться

Dialog dialog=new Dialog(this,android.R.style.Theme.Black.NoTitleBar.Fullscreen)

29
Чтобы это работало для меня, мне пришлось использовать android.R.style.Theme_Black_NoTitleBar_Fullscreen
Бен Клейтон

4
Call requires API level 11
Луис А. Флорит

1
@ LuisA.Florit попробуйте Theme_Black_NoTitleBar_Fullscreen
Фелипе Калдас

21
А как насчет полноэкранного режима с заголовком?
Heath Borders

1
Когда я делаю это (используя DialogFragment), я вижу, что цвет строки состояния убит диалогом, весь экран - это цвет фона диалога. Кто-нибудь знает обходной путь? Я попытался установить statusBarColor диалогового окна, но безрезультатно. PS: цвет панели навигации тоже убивается.
androidguy

83

Основываясь на этой ссылке , правильный ответ (который я сам проверил):

поместите этот код в конструктор или onCreate()метод диалога:

getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT);

кроме того, установите стиль диалога на:

<style name="full_screen_dialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
</style>

это можно сделать с помощью конструктора, например:

public FullScreenDialog(Context context)
{
  super(context, R.style.full_screen_dialog);
  ...

РЕДАКТИРОВАТЬ: альтернативой всему вышеперечисленному было бы установить стиль на android.R.style.Theme и все.


55

Самый простой способ нашел

Dialog dialog=new Dialog(this,android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        dialog.setContentView(R.layout.frame_help);
        dialog.show();

1
спасибо, это был действительно самый простой способ!
CommonSenseCode

1
Работал как шарм!
Ссылка 88,

1
Отлично. Отлично работает
Евгений Кононов

Это потрясающе! Должно быть приемлемое решение.
AmeyaB

не могу изменить цвет фона, все еще черный
Джемшит Искендеров

42

ИЗМЕНИТЬ До тех пор, пока StackOverflow не позволит нам редактировать наши ответы, это ответ, который работает для Android 3 и ниже. Пожалуйста, не понижайте его, потому что он сейчас не работает для вас, потому что он определенно работает со старыми версиями Android.


Вам нужно добавить только одну строку в свой onCreateDialog()метод:

@Override
protected Dialog onCreateDialog(int id) {
    //all other dialog stuff (which dialog to display)

    //this line is what you need:
    dialog.getWindow().setFlags(LayoutParams.FLAG_FULLSCREEN, LayoutParams.FLAG_FULLSCREEN);

    return dialog;
}

1
Почему я не могу использовать FLAG_FULLSCREEN
user790156

2
Что ж, сложно сказать - вы импортировали LayoutParams? Ваш макет xml установлен на fill_parent или match_parent?
Caspar Harmer

12
используйте android.view.WindowManager.LayoutParams.FLAG_FULLSCREEN
Derzu

1
ОШИБКА:FLAG_FULLSCREEN cannot be resolved or is not a field
Луис А. Флорит

1
Возможно, этот ответ устарел - он может не работать для Android 4.0 и выше.
Caspar Harmer

34
dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog.setContentView(R.layout.loading_screen);
    Window window = dialog.getWindow();
    WindowManager.LayoutParams wlp = window.getAttributes();

    wlp.gravity = Gravity.CENTER;
    wlp.flags &= ~WindowManager.LayoutParams.FLAG_BLUR_BEHIND;
    window.setAttributes(wlp);
    dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    dialog.show();

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


1
MATCH_PARENT работал у меня.
Рэй
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.