51 votes

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 un 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()) .

Y at-il un exemple de travail simple qui affiche une PopupWindow?

79voto

Todd Points 1142

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

Pour créer un simple travail PopupWindow, vous devez effectuer les opérations suivantes:

  1. Créer une mise en page XML qui décrit le point de Vue qui sera affiché dans le PopupWindow.
  2. Invoquer la PopupWindow en gonflant la mise en page XML, et d'attribuer une "vue parent" à la 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>

Le 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); 

4voto

Autant que je sache seulement la AbsoluteLayout œuvres(pls confirment), comme on le voit sur http://sree.cc/google/android/android-popup-window . J'ai montré le popup droit, mais LinearLayout ne montrait pas tous les éléments. Mais AbsoluteLayout est obsolète!

FrameLayout fonctionne aussi, mais l'organisation de points de vue est un cauchemar depuis la documentation officielle dit que c'est seulement bon pour la tenue d'un point de vue.

Aussi, pour être en mesure de recevoir les événements tactiles, vous avez besoin pour ce faire: setBackgroundDrawable(nouveau BitmapDrawable());

comme expliqué ultérieurement à Android fenêtre popup licenciement

-1voto

raman Points 209

Vous obtenez l'invisibilité parce que vous n'avez pas défini la couleur d'arrière-plan de la mise en page à laquelle vous êtes gonflé. Définissez-la comme étant Android: background = "# 778899" et vous pourrez certainement voir les choses

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X