Як встановити діалогове вікно для показу на повноекранному екрані? [зачинено]


129

У мене є GridView, і я хочу зробити імплементацію діалогового вікна, в якому зображення, яке я вибрав, має відображатися на весь екран.

тож як я можу зробити діалогові вікна в повноекранному режимі? Дякую!


2
Якщо ви хочете використовувати ПОВНУЮ ЕКРАНУ Dialog, чому б не просто використовувати ACTION_VIEW Intentфайли зображень за замовчуванням ?
— Буде Тейт

Вибачте, я маю на увазі майже повний екран або повне зображення
— user790156

3
У поєднанні з відповіддю на willytate, якщо у вас є діалог, використовуйте android.R.style.Theme_Translucent_NoTitleBar_Fullscreen у темі
— ingsaurabh


3
@MartinPfeffer У мене також є пропозиція для майбутнього користувача, але питання закрите Ендрю Барбер не від андроїд-спільноти. це дійсно просте запитання, про яке розробникам Android завжди цікаво. це питання знову має бути відкритим для кращих відповідей та майбутніх користувачів
— Абхішек Сінгх

Відповіді:


228

спробуйте

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);
  ...

EDIT: альтернативою усьому вищезазначеному було б встановити стиль на 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

EDIT До тих пір, поки 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 і новіших версій.
— Каспар Хармер

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.