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


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.