¿Existe un ejemplo sencillo de la clase PopupWindow con Android v2.0?
Busqué en línea y no pude encontrar un ejemplo funcional de la clase PopupWindow. Los ejemplos de código que encontré en línea se compilan pero no funcionan, o utilizan métodos que ya se han eliminado (como Activity.getViewInflate())
.
¿Existe un ejemplo funcional sencillo que muestre una ventana emergente?
Creé un ejemplo funcional basado en esta publicación de Grupos de Google.
Para crear una ventana emergente que funcione de forma sencilla, deberá hacer lo siguiente:
- Cree un XML de diseño que describa la vista que se representará dentro de la ventana emergente.
- Invoque PopupWindow inflando el XML de diseño y asigne la "vista principal" adecuada a la ventana emergente.
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>
código 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);
AFAIK, solo funciona AbsoluteLayout (confírmelo), como se ve en http://sree.cc/google/android/android-popup-window . Mostré la ventana emergente correctamente, pero LinearLayout no mostraba todos los elementos. ¡Pero AbsoluteLayout está en desuso!
FrameLayout también funciona , pero organizar vistas es una pesadilla ya que la documentación oficial dice que solo sirve para mantener una vista.
Además, para poder recibir eventos táctiles , debe hacer esto: setBackgroundDrawable(new BitmapDrawable());
como se explica con más detalle en el cierre de la ventana emergente de Android