Afficher AlertDialog dans n’importe quelle position de l’écran

Lorsque nous montrons un AlertDialog dans Android, il apparaît au centre de l’écran. Est-il possible de changer de position?

    Après avoir cherché dans divers articles, j’ai trouvé la solution.

    Le code est affiché ci-dessous:

    private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setItems(items, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { if(item == 0) { } else if(item == 1) { } else if(item == 2) { } } }); AlertDialog dialog = builder.create(); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); WindowManager.LayoutParams wmlp = dialog.getWindow().getAtsortingbutes(); wmlp.gravity = Gravity.TOP | Gravity.LEFT; wmlp.x = 100; //x position wmlp.y = 100; //y position dialog.show(); 

    La valeur de la position x correspond aux pixels de gauche à droite. Pour y la valeur de la position est de bas en haut.

    Si vous souhaitez par exemple déplacer le dialog de progression un peu plus bas et ne pas définir la position de pixel exakt, cela suffit:

     progressDialog.getWindow().getAtsortingbutes().verticalMargin = 0.2F; 

    Pour que le réglage vienne en effet effet, j’ai ajouté le code suivant
    dialog.getWindow().setAtsortingbutes(wmlp);

    après, changez la valeur de wmlp dans la réponse de gypsicoder, ou le réglage de wmlp ne prend pas effet par mon test.

    Ces réponses déplaceront la position de AlertDialog, cependant, la position de la boîte de dialog affichée inclura également le remplissage autour de la boîte de dialog.

    Si vous voulez vous débarrasser de ce remplissage (par exemple, pour placer votre boîte de dialog au bas de l’écran), vous devrez également remplacer le style AlertDialog par défaut dans votre styles.xml pour définir la propriété windowBackground sur null, comme ça. :

          

    En plus de définir le Window.LayoutParameters comme décrit dans la réponse acceptée.

    Cri spécial à @David Caunt dont la réponse à: remove border, padding de Dialog a complété cette image.