web-dev-qa-db-fra.com

Existe-t-il un exemple simple de la classe PopupWindow utilisant Android v2.0?

J'ai regardé en ligne et je n'ai pas pu trouver d'exemple de travail de la classe PopupWindow. Les exemples de code que j'ai trouvés en ligne compilent mais ne fonctionnent pas ou utilisent des méthodes qui ont depuis été supprimées (telles que Activity.getViewInflate()).

Existe-t-il un simple travail exemple qui affiche un PopupWindow?

51
Todd

J'ai créé un exemple de travail basé sur ce message de Google Groupes.

Pour créer un PopupWindow simple et fonctionnel, vous devrez procéder comme suit:

  1. Créez un XML de présentation qui décrit la vue qui sera rendue dans la fenêtre contextuelle.
  2. Appelez le PopupWindow en gonflant le XML de mise en page et affectez la "vue parent" appropriée au pop-up.

popup_example.xml:

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

    <TextView
        Android:layout_width="fill_parent"
        Android:layout_height="wrap_content"
        Android:layout_marginTop="10dip"
        Android:text="Test Pop-Up"
    />

</LinearLayout>

Code Java:

    LayoutInflater inflater = (LayoutInflater)
       this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    PopupWindow pw = new PopupWindow(
       inflater.inflate(R.layout.popup_example, null, false), 
       100, 
       100, 
       true);
    // The code below assumes that the root container has an id called 'main'
    pw.showAtLocation(this.findViewById(R.id.main), Gravity.CENTER, 0, 0); 
79
Todd

AFAIK seul le AbsoluteLayout fonctionne (veuillez confirmer), comme vu sur http://sree.cc/google/Android/android-popup -window . J'ai montré la fenêtre contextuelle à droite, mais LinearLayout ne montrait pas tous les éléments. Mais AbsoluteLayout est déconseillé!

FrameLayout fonctionne également , mais l'organisation des vues est un cauchemar puisque la documentation officielle indique qu'elle n'est bonne que pour conserver une seule vue.

De plus, pour pouvoir recevoir des événements tactiles , vous devez le faire: setBackgroundDrawable (nouveau BitmapDrawable ()) ;

comme expliqué plus loin à rejet de la fenêtre popup Android

4
Ravindranath Akila