2013-08-11 5 views
1

J'ai rencontré un problème grave avec une boîte de dialogue d'alerte dans Android. J'ai étendu DialogFragment et je veux que la boîte de dialogue soit en plein écran. Après beaucoup de tentatives ratées, j'ai compris que je pouvais obtenir une boîte de dialogue en plein écran en définissant le thème de la boîte de dialogue. Je l'ai fait comme çaPlein écran Holo Dialogs

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

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

depuis que je lis cela était compatible avec les API plus. Mais malheureusement, il ne fonctionne qu'avec certains thèmes, il ne fonctionne jamais avec un thème holo. Par exemple. si j'utilise Theme_Black_NoActionBar_Fullscreen, il sera plein écran, mais si j'utilise Theme_Holo_NoActionBar_Fullscreen, ou même Theme_DeviceDefault_NoActionBar_Fullscreen, il ne sera pas en plein écran. Chaque fois que Holo est impliqué, la boîte de dialogue ne remplit pas l'écran.

J'ai même essayé de définir mon propre style, l'extension Theme.Holo avec les paramètres suivants:

<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> 

Mais même explicitement la mise en plein écran et un cadre nul et fond, etc, ne suffit pas, la boîte de dialogue refuse toujours de remplir la largeur de l'écran (je le teste sur mon téléphone, en mode paysage).

J'aimerais beaucoup de l'aide à ce sujet, j'ai essayé de le faire fonctionner toute la journée. J'ai d'abord essayé de définir les attributs de la fenêtre en utilisant LayoutParams mais cela ne semble pas fonctionner avec un DialogFragment. Merci.

+0

Les boîtes de dialogue en plein écran sont appelées Activités :) Pourquoi ne le voulez-vous pas? – tilpner

+0

OK, pas complètement en plein écran, je veux toujours une marge autour de la fenêtre de dialogue. C'est ce que vous obtenez avec Theme_Black_NoActionBar_Fullscreen. Vous obtenez une fenêtre qui utilise la plus grande partie de la largeur de l'écran, avec une marge. Mais avec les thèmes Holo, j'ai juste une fenêtre qui fait la moitié de la largeur de l'écran. La boîte de dialogue contient du texte, donc ce serait plus agréable si elle utilisait plus de largeur. En tout cas, rien de ce que j'ai essayé ne me permet de modifier la largeur de la boîte de dialogue. Sûrement je devrais être en mesure d'affecter la largeur en quelque sorte, plutôt que d'avoir à avoir la largeur choisie pour moi? –

Répondre

2

AlertDialogs ne sont pas destinés à être en plein écran. Pour ce faire, il vous suffit d'utiliser la norme Dialog fournie avec le DialogFragment. Vous aurez besoin d'ajouter votre propre mise en page afin d'ajouter des boutons pour simuler le AlertDialog. Plus de travail ... oui, mais tous les thèmes android.R.style.Theme_DeviceDefault_Dialog_ * fonctionneront correctement.

+0

Merci beaucoup, ça marche maintenant. Mais il y a encore un léger problème, il ne remplira pas l'écran sans régler Android: minWidth = "1000dp" sur la version linéaire utilisée avec la boîte de dialogue. Mais au moins cela fonctionne, merci. –