Mostrar un PopupWindow centralizado
Tengo algunos pop-ups en mi aplicación, es fullscreen y el código siguiente:
content.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT)); content.measure(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); int screenWidth = windowManager.getDefaultDisplay().getWidth(); int screenHeight = windowManager.getDefaultDisplay().getHeight(); int x = screenWidth / 2 - content.getMeasuredWidth() / 2; int y = screenHeight / 2 - content.getMeasuredHeight() / 2; window.showAtLocation(content, Gravity.NO_GRAVITY, x, y);
Haga que la ventana se muestre centrada.
- Lista emergente de hilandera personalizada en android
- Cómo ocultar el popup de filtro en ListView en Android?
- Cierre del Popup en Android
- Desactivación del cuadro de diálogo al tocar fuera
- Cómo llamar o aparecer fragmento al hacer clic en el botón
Pero tengo otra actividad que no es de pantalla completa, cuando se abre el popup es justo desde donde debe ser.
Tratando de averiguar por qué sucede esto, creo que el showAtLocation muestra que es relativo a la actividad actual, pero tengo que mostrarlo en relación con la pantalla.
¿Cómo puedo hacer eso? O hay una manera más simple de sólo el pop-up sólo centrado?
- Popup en android?
- android PopupWindow de un fragmento
- Cómo cambiar el menú emergente del color de fondo android
- Pantalla emergente / superpuesta en panal de android
- gap_init llamado de origen restringido
- Mostrar la vista de la herramienta en Android
- Quiero establecer el ancho de popup en tiempo de ejecución de acuerdo al tamaño del título en android
- ¿Cómo mostrar errores de entrada en popup?
popupWindow.showAtLocation(anyViewOnlyNeededForWindowToken, Gravity.CENTER, 0, 0);
Esto centrará su vista.
Me tomó 2 horas de dolor para entender esto. No necesitaba ninguna matemática de magia negra para manejar esto.
La vista sólo se necesita para el testigo de ventana, no tiene ningún otro impacto en la ubicación.
Gravity le dice al administrador de diseño dónde iniciar el sistema de coordenadas y cómo tratar esas coordenadas. No puedo encontrar los documentos, pero el hacking me está mostrando que:
- CENTER utiliza el centro de la ventana emergente para alinearse con la x, y especificada. Así que 0,0 es centrado en la pantalla
- BOTTOM utiliza la parte inferior de la ventana emergente para alinearla con la x, y especificada. Así que 0,0 tiene el fondo emergente alineado con la parte inferior de la pantalla. Si desea 10px padding entonces y = 10 (no -10) para mover el popup hasta la pantalla de 10 píxeles.
Escribí esto aquí Android PopupWindow.showAtLocation () y los efectos de la gravedad
View popupView = layoutInflater.inflate(R.layout.index_popviewxml, null); final PopupWindow popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT, true); popupWindow.setTouchable(true); popupWindow.setFocusable(true); popupWindow.showAtLocation(popupView, Gravity.CENTER, 0, 0);
- ¿Cómo puedo conectarme a Kindle Fire para el desarrollo?
- Cómo deshabilitar onItemSelectedListener que se invocará al configurar el elemento seleccionado por código