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.

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?

 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); 
  • Mensaje emergente de Android
  • Seleccione Texto y muestre el significado como pop-up en MUPDF
  • Cómo mostrar javascript popup en android webview
  • Pequeño Popup para instrucciones, como los cuadrados
  • Detectar y manejar pop-ups en Webview y abrir url en una nueva pestaña o ventana
  • Android PayPalActividad no en pantalla completa
  • Cómo animar la ventana emergente de abajo hacia arriba en android
  • ¿Puede PopupWindow de Android mostrar otro PopupWindow?
  • Cómo abrir la ventana emergente en EditText prensa larga en el estudio de Android
  • Cambiar el fondo del mensaje de error de EditText
  • Diálogos y ventanas emergentes en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.