Cuando mostramos un AlertDialog en Android, se muestra en el centro de la pantalla. ¿Hay alguna forma de cambiar la posición?Mostrar AlertDialog en cualquier posición de la pantalla
Respuesta
Después de buscar en varias publicaciones, he encontrado la solución.
El código se publica a continuación: Valor de
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í x de la posición 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 progressdialog un poco más abajo, y no establecer la posición exakt píxel, entonces esto es suficiente:
progressDialog.getWindow().getAttributes().verticalMargin = 0.2F;
para realizar el ajuste vienen efecto de información, añadí la siguiente código
dialog.getWindow().setAttributes(wmlp);
después de cambiar el valor de wmlp en la respuesta de gypsicoder, o el establecimiento de wmlp no tiene en efecto por mi prueba.
Estas respuestas moverán la posición del AlertDialog, sin embargo, la posición del cuadro de diálogo mostrado también incluirá el relleno alrededor del cuadro de diálogo.
Si desea deshacerse de este relleno (por ejemplo, para colocar el cuadro de diálogo alineado con la parte inferior de la pantalla), también deberá sobrescribir el estilo AlertDialog predeterminado en su styles.xml para configurar windowBackground en nula, 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 los Window.LayoutParameters como se describe en la respuesta aceptada.
Llamamiento especial a @David Caunt cuya respuesta al: remove border, padding from Dialog completó esta imagen.
- 1. Cambio de la posición del diálogo en la pantalla androide
- 2. ¿Cómo abrir AlertDialog desde la pantalla de preferencias?
- 3. ¿Cómo mostrar AlertDialog en un fragmento?
- 4. ¿Cómo mostrar la brújula en la pantalla?
- 5. C# cómo mostrar un formulario en una posición específica del mouse en la pantalla?
- 6. ¿Cómo mostrar en pantalla la posición del cursor en una tableta o teléfono inteligente Android?
- 7. Elemento de posición de Android en la pantalla
- 8. Mostrar div cuando la posición de desplazamiento
- 9. Mostrar la pantalla "Esperar" en WPF
- 10. Posición en la parte inferior derecha de la pantalla
- 11. Posición winform en la esquina inferior izquierda de la pantalla
- 12. Mostrar actividades múltiples en la misma pantalla
- 13. Mostrar teclado suave en AlertDialog con WebView dentro (Android)
- 14. Mover la pantalla a una posición determinada
- 15. MVC Razor - Salida de texto en posición en la pantalla
- 16. Buscar posición de pantalla de un QGraphicsItem
- 17. Jquery soluciona la posición div cuando div alcanza la posición de pantalla, no la posición de desplazamiento
- 18. ListView en AlertDialog
- 19. Obteniendo la posición de la anotación relativa a la pantalla
- 20. Cocoa: Obteniendo la posición actual del mouse en la pantalla
- 21. ¿La forma más rápida de ver la pantalla? Cualquier idioma
- 22. ¿Cómo obtengo la posición actual del cursor de la pantalla?
- 23. [Pantalla de bienvenida] ¿Cómo mostrar una imagen en pantalla completa?
- 24. Mostrar vista en una vista de desplazamiento en la pantalla
- 25. ¿Cómo se encuentra la posición de la pantalla de un control en Silverlight en WP7?
- 26. Cómo cambiar el tamaño de AlertDialog en la pantalla del teclado
- 27. Groovy: ¿Cómo escribir en una línea en la misma posición en la pantalla? (Windows)
- 28. Android cómo mostrar la notificación en la pantalla
- 29. Cómo mostrar el valor de una variable en la pantalla
- 30. Cocos2D CCNode posición en coordenadas de pantalla absoluta
También podría crear un cuadro de diálogo de alerta personalizado. Hace poco hice esto y luego tuve que obtener el ancho y alto de las pantallas y luego establecí X e Y en función de un porcentaje de esos valores, de esa manera el diseño se escalo bien. http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog – Roloc
Funciona, pero tuve que agregar esto: WMLP.gravity = Gravity.TOP | Gravity.LEFT; de lo contrario, los valores xey se usaron como desplazamientos desde el centro de la pantalla. – BoD
Solo para compartir la experiencia: El código anterior funciona solo mientras el diálogo permanezca completamente en la pantalla. Por ejemplo, si la nueva coordenada y es demasiado grande, el cuadro de diálogo se mueve a la posición más baja en la pantalla que todavía muestra el diálogo completo. La parte difícil aquí es que los valores xey de los parámetros de diseño muestran a partir de ese momento las coordenadas de la esquina superior izquierda de la ventana de diálogo y no pueden usarse para calcular un movimiento relativo de la ventana, por ejemplo cuando reaccionando a un evento MotionEvent. – Nantoka