Android - PopupWindow au-dessus d'une vue spécifique
Je développe une application pour Android et je suis en utilisant une fenêtre pop-up lorsque l'utilisateur clique sur un spécifique de la barre de menu de l'objet(composé de petites images alignés horizontalement) sur le bas de l'écran.
Sur le sur je veux la fenêtre pop-up pour être ancré dans le coin supérieur gauche de la vue qui a été cliqué et sera affichée sur le dessus.
Les seules méthodes qui semblent pertinentes sont showAsDropDown(Vue d'ancrage, int xoff, int yoff) et showAtLocation(Vue parent, int gravité, int x, int y). Le problème avec showAsDropDown est qu'il est ancré dans le coin inférieur gauche de la vue.
Est-il une autre façon de mettre en œuvre cette?
source d'informationauteur Matt | 2013-05-29
Vous devez vous connecter pour publier un commentaire.
popupWindow.showAtLocation(...)
montre, en réalité, la fenêtre en position absolue sur la écran (même pas de l'application). Le point d'ancrage que dans l'appel n'est utilisé que pour sa fenêtre de jeton. Les coordonnées sont les crédits issus de la gravité.Ce que vous voulez vraiment utiliser est:
Cet appel est uniquement disponible dans l'API 19+, de sorte que dans les versions antérieures, vous devez utiliser:
Ces appels afficher la fenêtre contextuelle par rapport à l'ancrage de la vue. Notez que la valeur par défaut de la gravité (lorsque l'appel est spécifié sans gravité) est
Gravity.TOP|Gravity.START
donc, si vous êtes explicitement à l'aide deGravity.LEFT
à divers endroits dans votre application, vous aurez un mauvais moment 🙂Celui que vous souhaitez utiliser est
showAtLocation(...)
. Vous spécifiez le point d'ancrage de vue (celui de l'utilisateur clique), et la position par rapport à l'aide de lagravity
paramètre et les décalages. Pensez à lagravity
paramètre comme laPopupWindow
est un peu comme un enfant de la vue et de la vue parent, c'est comme un récipient de mise en page.Vous devriez être capable de mettre
Gravity.LEFT | Gravity.TOP
en tant que paramètre.Vous avez juste besoin de déplacer le popupWindow par la hauteur de son point d'ancrage à l'aide de la yoff paramètre dans la showAsDropDown(Vue d'ancrage, int xoff, int yoff) syntaxe.
Aussi, beaware que si la hauteur maximale autorisée à l'ancre ne permettent pas la transformation, le popup ne pourrait pas apparaître correctement.
J'ai ce code: PopupWindow ci-dessous un point de vue spécifique (la Gravité de la Fin) pour toutes les version de sdk.
Ici la Vue v est ImageButton Calendrier.
vous pouvez afficher la fenêtre contextuelle toujours au-dessus de l'ancre en suivant
popupwindow.showAsDropDown(ancre,0, -125);
cette chose que le travail pour moi