Existe-t-il un moyen de rendre l'affichage de la boîte de dialogue en plein écran, c'est-à-dire que la boîte de dialogue occupe tout l'écran (comme une activité). J'ai essayé d'utiliser les LayoutParams et des styles tels que <item name="Android:windowFullscreen">true</item>
mais rien ne semble fonctionner.
J'ai trouvé un moyen de supprimer la barre de titre, mais je n'ai pas trouvé le moyen de mettre une boîte de dialogue en plein écran. Alors quelqu'un peut-il me suggérer un moyen de le faire?.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="@Android:style/Theme.Dialog">
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowFrame">@null</item>
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowIsFloating">true</item>
<item name="Android:windowContentOverlay">@null</item>
<item name="Android:windowBackground">@color/dialog_background</item>
</style>
</resources>
Donnez à son constructeur un thème ne contenant pas de dialogue, tel que Android.R.style.Theme ou Android.R.style.Theme_Light .
Code par @Bob.
Dialog dialog = new Dialog(context, Android.R.style.Theme_Light);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.MyCustomDialogLayout);
dialog.show();
Le code suivant fonctionne dans mon cas:
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.mydialog2);
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
Essaye ça
dialog = new Dialog(context,Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
1. personnalisez votre style de dialogue
<style name = "MyDialog" >
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowIsTranslucent">true</item>
<item name = "Android:windowContentOverlay" >@null</item >
<item name = "Android:colorBackgroundCacheHint" >@null</item >
<item name = "Android:backgroundDimEnabled">true</item>
<item name = "Android:windowBackground" >@Android:color/transparent</item >
</style >
2: personnalisez votre dialogue
WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE);
int width = wm.getDefaultDisplay().getWidth();
int height = wm.getDefaultDisplay().getHeight();
final Dialog dialog = new Dialog(this, R.style.MyDialog);
View view = LayoutInflater.from(this).inflate(R.layout.layout_dialog, null);
WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.width = WindowManager.LayoutParams.MATCH_PARENT;
params.height = WindowManager.LayoutParams.WRAP_CONTENT;
dialog.setContentView(view);
dialog.getWindow().setGravity(Gravity.BOTTOM);
dialog.getWindow().setWindowAnimations(R.style.mydialog_Style);
dialog.show();
Pour les dialogues en plein écran, vous devez étendre DialogFragment
. Il fournira les méthodes du cycle de vie Fragment
. C'est la méthode recommandée dans les documents de développement Android. Vous pouvez également utiliser les méthodes simples Dialog
ou AlertDialog
.
Lorsque vous créez une instance de dialogue, utilisez simplement Android.R.style.Theme_Black_NoTitleBar_Fullscreen
theme avec le contexte suivant:
Dialog dialog = new Dialog(getActivity(), Android.R.style.Theme_Black_NoTitleBar_Fullscreen);
ou
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), Android.R.style.Theme_Black_NoTitleBar_Fullscreen);
Cela affichera la boîte de dialogue en plein écran.
La réponse ne fonctionne pas pour moi (sdk 21, samsung galaxy s5). Après des recherches et des tests, je constate que le point clé pour définir une boîte de dialogue en plein écran est le <item name="Android:windowIsFloating">false</item>
dans votre style de dialogue. La plupart des styles de dialogue dans sdk sont définis comme tels! Définissez-le faux dans un style et utilisez-le dans
AlertDialog.Builder = new AlertDialog.Builder(getActivity(), R.style.YourStyle);
votre style peut ressembler
<style name="YourStyle">
<item name="Android:windowIsFloating">false</item>
...
</style>
après la définition de false, il devrait être en plein écran. Et plus encore, vous pouvez utiliser
dialog.getWindow.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
pour régler sa hauteur sur wrap_content . J'espère pouvoir aider quelqu'un.
Créez votre dialogue personnalisé en tant que
Dialog dialog = new Dialog(context, Android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
J'utilise un thème Activité avec dialogue. Dans ce cas, le mode plein écran fonctionnait comme suit:
int mUIFlag = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().getDecorView().setSystemUiVisibility(mUIFlag);
getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
setContentView(R.layout.lockscreen_activity);
}
Voici les étapes à suivre pour créer une boîte de dialogue plein écran avec une disposition personnalisée qui occupe la totalité de l’écran sans aucun remplissage de chaque site.
Étape 1: Définissez votre structure de dialogue personnalisée nommée layout_fullscreen_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:background="@color/colorPrimary">
<!-- Your dialog content here -->
</LinearLayout>
Étape 2: Définissez un nouveau style dans styles.xml
nommé FullScreenDialog
<style name="FullScreenDialog" parent="Theme.AppCompat.Dialog">
<item name="Android:windowBackground">@Android:color/transparent</item>
</style>
Etape 3: Ecrivez une méthode qui crée et affiche un dialogue.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
createAndShowDialog(this);
}
// This method used to create and show a full screen dialog with custom layout.
public void createAndShowDialog(Context context) {
Dialog dialog = new Dialog(context, R.style.FullScreenDialog);
dialog.setContentView(R.layout.layout_fullscreen_dialog);
WindowManager.LayoutParams layoutParams = dialog.getWindow().getAttributes();
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
dialog.getWindow().setAttributes(layoutParams);
dialog.show();
}
}
essayez ce code
protected void openDialog() {
Dialog dialog = new Dialog(this);
dialog.addContentView(new View(this), (new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT)));
dialog.show();
}