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

129

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

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

user790156
источник
2
Если вы хотите использовать ПОЛНЫЙ ЭКРАН Dialog, почему бы просто не использовать значение ACTION_VIEW Intentпо умолчанию для файлов изображений?
Will Tate
извините, я имею в виду почти полный экран или полное изображение
user790156
3
В сочетании с ответом на willytate, если вам нужно диалоговое окно, используйте android.R.style.Theme_Translucent_NoTitleBar_Fullscreen в теме
ingsaurabh
Это может помочь stackoverflow.com/a/2700683/1118886
Шераз Ахмад Хильджи
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 и все.

разработчик Android
источник
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 работал у меня.
Рэй