web-dev-qa-db-fra.com

Android PopupWindow avec la flèche d'info-bulle

J'ai vu beaucoup de questions sur la suppression de la bordure d'une fenêtre PopupWindow en passant null ou new Drawable () à setBackgroundDrawable (). J'ai le problème opposé. Je souhaite une bordure autour de ma fenêtre Popup, de préférence avec une flèche d’info-bulle pointant vers mon ancre. Actuellement, ma fenêtre pop-up n'a pas de frontière. J'ai essayé d'ajuster les marges, l'arrière-plan dans le fichier xml, la largeur et la hauteur des lignes de présentation, listview et listview, mais en vain. Quelqu'un peut-il m'aider s'il vous plaît à obtenir une bordure et une image sur le dessus? J'essaie de rester avec le Android SDK avec ceci.

popup_menu_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"    
    Android:orientation="vertical" >

    <com.github.jeremiemartinez.refreshlistview.RefreshListView
        Android:id="@+id/popup_menu_list_listview"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:background="@color/color_white" />

</LinearLayout>

Java

private void displayPopupMenu() {
        LayoutInflater layoutInflater = getLayoutInflater();
        View popupView = layoutInflater.inflate(R.layout.popup_menu_list, null);        
        final PopupWindow popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);       
        RefreshListView myListView = (RefreshListView) popupView.findViewById(R.id.popup_menu_list_listview);       
        mAdapter = new myAdapter(this, getAdapterData());       
        myListView.setAdapter(mAdapter);            
        popupWindow.showAsDropDown(mMyAnchor);      
    }

J'ai juste pris ces exemples comme exemples, mais je veux quelque chose comme ceci où la popup pointe vers l'ancre:

enter image description here

Mais je reçois quelque chose comme ça:

enter image description here

48
Lee

Il existe de nombreuses bibliothèques et codes disponibles dans Market. Les liens sont donnés ci-dessous:

Ceci est le modèle d'interface utilisateur QuickAction. Jeter un coup d'œil à:

  1. QuickAction-Dialog

  2. Quick-action-pattern-in-Android

  3. Popups d'aide de style Chrome

Une autre alternative serait les "super-info-bulles":

https://github.com/nhaarman/supertooltips

En voici une démo:

https://play.google.com/store/apps/details?id=com.haarman.supertooltips

De ce premier lien/exemple ressemble à l'image ci-dessous. Ce ne sont que des démos, mais vous pouvez les personnaliser selon vos besoins.

enter image description here

56
M D

Si vous recherchez une bibliothèque simple, j'ai créé celle basée sur PopupWindow.

https://github.com/douglasjunior/Android-simple-tooltip

Demo

Vous pouvez simplement utiliser PopupWindow avec une vue avec un arrière-plan vectoriel:

<?xml version="1.0" encoding="utf-8"?>
<vector xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:width="24dp"
    Android:height="20dp"
    Android:viewportHeight="162"
    Android:viewportWidth="196">
    <path
        Android:fillColor="@color/black"
        Android:pathData="M0 26.9917C0 12.0846 12.09433 0 26.99583 0L169.0042 0C183.9136 0 196 12.09104 196 26.9917L196 100.0083C196 114.9154 183.9057 127 169.0042 127L124 127L98.5 162L73 127L26.99583 127C12.08644 127 0 114.909 0 100.0083L0 26.9917" />
</vector>
2
Andoctorey

Vous trouverez une réponse plus détaillée à l’adresse https://github.com/florent37/ViewTooltip , ce qui vous permet de contrôler de nombreuses choses, y compris la direction à partir de votre vue. Une discussion et quelques méthodes peuvent être trouvées ici .

Edit: Voici un exemple gif: enter image description here

1
Jacolack

Vous pouvez créer votre propre info-bulle personnalisée en utilisant uniquement xml. J'ai écrit une démo https://github.com/nidhinek/Android-tooltip basé sur PopupWindow

0
Nidhin