2013-08-11 4 views
1

У меня возникла серьезная проблема с диалоговым окном оповещения в Android. Я расширил DialogFragment, и я хочу, чтобы диалог был полноэкранным. После многих неудачных попыток я понял, что могу получить полноэкранный диалог, установив тему диалога. Я сделал это, как этотFullscreen Holo Dialogs

ContextThemeWrapper context = new ContextThemeWrapper(getActivity(), android.R.style.Theme_Holo_NoActionBar_Fullscreen);

AlertDialog.Builder builder = new AlertDialog.Builder(context);

, так как я прочитал это было совместимо с более старым API. Но, к сожалению, он работает только с определенными темами, он никогда не работает с голой темой. Например. если я использую Theme_Black_NoActionBar_Fullscreen, он будет полноэкранным, но если я использую Theme_Holo_NoActionBar_Fullscreen или даже Theme_DeviceDefault_NoActionBar_Fullscreen, он не будет полноэкранным. Всякий раз, когда Holo участвует, диалог не заполняет экран.

Я даже попытался определения свой собственный стиль, расширяя Theme.Holo со следующими параметрами:

<item name="android:windowIsFloating">false</item> 
    <item name="android:windowFullscreen">true</item> 
    <item name="android:windowBackground">@null</item> 
    <item name="android:windowFrame">@null</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowAnimationStyle">@null</item> 

    <item name="android:windowIsTranslucent">true</item> 

Но даже явно устанавливая в полноэкранном режиме и нулевой кадр и фона, и т.д., не помогает, диалог по-прежнему отказывается заполнять ширину экрана (я тестирую его на своем телефоне, в ландшафтном режиме).

Мне очень нужна помощь в этом, я пытался заставить его работать весь день. Сначала я попытался настроить атрибуты окна с помощью LayoutParams, но это не работает с DialogFragment. Благодарю.

+0

Полноэкранные диалоги называются Activity :) Почему вы этого не сделали? – tilpner

+0

ОК, а не полностью полноэкранный режим, я все равно хочу получить маржу вокруг диалогового окна. Это то, что вы получаете с Theme_Black_NoActionBar_Fullscreen. Вы получаете окно, которое использует большую часть ширины экрана с запасом. Но с темами Холо, я просто получаю окно, которое составляет половину ширины экрана. Диалог содержит текст, поэтому было бы лучше, если бы он использовал большую ширину. В любом случае, ничего, что я пробовал, позволяет мне каким-либо образом изменить ширину диалога. Неужели я должен как-то повлиять на ширину, вместо того, чтобы иметь ширину, выбранную для меня? –

ответ

2

AlertDialogs не предназначены для полноэкранного режима. Чтобы достичь этого, вы должны просто использовать стандарт Dialog, который поставляется с DialogFragment. Вам нужно будет добавить свой собственный макет, чтобы добавить кнопки для имитации AlertDialog. Больше работы ... да, но все те темы android.R.style.Theme_DeviceDefault_Dialog_ * будут работать правильно.

+0

Большое спасибо, он работает сейчас. Но все еще есть небольшая проблема, она не будет заполнять экран без установки андроида: minWidth = "1000dp" на linearlayout, используемом с диалогом. Но, по крайней мере, это работает, спасибо. –