Mostrar AlertDialog en cualquier posición de la pantalla

Cuando mostramos un AlertDialog en android se muestra en el centro de la pantalla. ¿Hay alguna manera de cambiar la posición?

Después de buscar en varios post he encontrado la solución.

El código aparece a continuación:

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().getAttributes(); wmlp.gravity = Gravity.TOP | Gravity.LEFT; wmlp.x = 100; //x position wmlp.y = 100; //y position dialog.show(); 

Aquí el valor de la posición x es píxeles de izquierda a derecha. Para el valor de posición y es de abajo hacia arriba.

Si por ejemplo desea mover el diálogo de progreso un poco más abajo y no establecer la posición de píxel exakt, entonces esto es suficiente:

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

Para hacer el ajuste viene efecto de la información, agregué el código siguiente
dialog.getWindow().setAttributes(wmlp);

Después de cambiar el valor de wmlp en la respuesta de gypsicoder, o el ajuste de wmlp no toma en efecto por mi prueba.

Estas respuestas moverán la posición del AlertDialog, sin embargo, la posición del diálogo mostrado incluirá también el relleno alrededor del diálogo.

Si desea deshacerse de este relleno (por ejemplo, para colocar el cuadro de diálogo al ras de la parte inferior de la pantalla), también tendrá que reemplazar el estilo predeterminado de AlertDialog en su styles.xml para establecer el windowBackground a null, como así :

 <resources> <!-- Example app theme - mine uses the below --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <item name="android:alertDialogTheme">@style/MyDialogTheme</item> </style> <style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"> <!-- Full width --> <item name="android:layout_width">fill_parent</item> <!-- Null window background kills surrounding padding --> <item name="android:windowBackground">@null</item> <item name="android:windowNoTitle">true</item> </style> </resources> 

Además de establecer Window.LayoutParameters como se describe en la respuesta aceptada.

Especial shout-out a @David Caunt cuya respuesta en: eliminar la frontera, el relleno de diálogo completó esta imagen.

  • Creación de vistas dentro de un hilo de trabajo
  • Diseño de EditText con esquinas redondeadas y sombra interior
  • Android menú desplegable (sin girador!)
  • Shared Toast no se muestra en Android 3.0.1 en Motorola Xoom
  • En Android, ¿cómo posiciono una imagen encima de otra para que parezca una insignia?
  • ¿Cómo mostrar iconos en el menú de desbordamiento de ActionBar?
  • ¿Cómo detectar HTC Sense?
  • ¿Cómo hacer que las aplicaciones de Android 4.0 sean compatibles con versiones anteriores?
  • Circle Meter Tipo UI en android?
  • Android - ScrollView como foursquare con mapas + lista
  • Desactivar SlidingMenu en actividad
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.