studio example android popupwindow

example - popupwindow android studio



Android-PopupWindow sobre una vista especĂ­fica (7)

El que quieres usar es showAtLocation(...) . Usted especifica la vista de anclaje (en la que el usuario hace clic), y la coloca en relación con eso a través del parámetro de gravity y las compensaciones. Pensar en el parámetro de gravity como el PopupWindow es casi como una vista secundaria y la vista principal es como un diseño de contenedor.

Deberías poder poner Gravity.LEFT | Gravity.TOP Gravity.LEFT | Gravity.TOP como el parámetro.

Estoy desarrollando una aplicación para Android y estoy usando una ventana emergente cuando el usuario hace clic en un objeto específico de la barra de menú (que consiste en pequeñas imágenes alineadas horizontalmente) en la parte inferior de la pantalla.

En el clic quiero que la ventana emergente se ancle a la esquina superior izquierda de la vista en la que se hizo clic y se muestre en la parte superior.

Los únicos métodos que parecen ser relevantes son showAsDropDown (View anchor, int xoff, int yoff) y showAtLocation (View parent, int gravity, int x, int y) . El problema con showAsDropDown es que está anclado a la esquina inferior izquierda de la vista.

¿Hay otra manera de implementar esto?


Solo necesitaba mover la ventana emergente por la altura de su ancla utilizando el parámetro yoff en la sintaxis showAsDropDown (View anchor, int xoff, int yoff) .

popupWindow.showAsDropDown(anchor, 0, -anchor.getHeight()+popupView.getHeight);

Además, tenga en cuenta que si la altura máxima permitida para anclar no permite la transformación, es posible que la ventana emergente no se muestre correctamente.


Tengo este código: PopupWindow debajo de una vista específica (Gravity End) para todas las versiones de sdk.

// display the popup[![enter image description here][1]][1] if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { mPopupWindow.showAsDropDown(v, 0, 0, Gravity.END); } else { mPopupWindow.showAsDropDown(v, v.getWidth() - mPopupWindow.getWidth(), 0); }

Aquí la vista v es el calendario de ImageButton.


popupwindow.showAsDropDown (anchor, 0, -125); esto me funciona


puede mostrar la ventana emergente siempre por encima del ancla siguiendo

popupWindow.showAsDropDown(anchor, 0, -anchor.getHeight()-popupView.getHeight);


popupWindow.showAtLocation(...) realidad muestra la ventana absolutamente posicionada en la pantalla (ni siquiera la aplicación). El ancla en esa llamada solo se usa para su token de ventana. Las coordenadas son compensaciones de la gravedad dada.

Lo que realmente quieres usar es:

popupWindow.showAsDropDown(anchor, offsetX, offsetY, gravity);

Esta llamada solo está disponible en API 19+, por lo que en versiones anteriores debe usar:

popupWindow.showAsDropdown(anchor, offsetX, offsetY);

Estas llamadas muestran la ventana emergente relativa a la vista de anclaje especificada. Tenga en cuenta que la gravedad predeterminada (cuando se llama sin gravedad específica) es Gravity.TOP|Gravity.START por lo que si está utilizando Gravity.LEFT explícitamente en varios puntos de su aplicación, tendrá un mal momento :)


popupWindow.showAtLocation(anchor, Gravity.BOTTOM, 0, anchor.getHeight());