example custom android android-popupwindow

custom - ¿Hay un ejemplo simple de la clase PopupWindow con Android v2.0?



show popup android (3)

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 compilan pero no funcionan, o están usando métodos que se han eliminado desde entonces (como Activity.getViewInflate()) .

¿Hay un ejemplo de trabajo simple que muestre una ventana emergente?


AFAIK solo funciona AbsoluteLayout (confirma los pls), como se ve en http://sree.cc/google/android/android-popup-window . He mostrado 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 es bueno para mantener una vista.

Además, para poder recibir eventos táctiles , debe hacer esto: setBackgroundDrawable (new BitmapDrawable ());

como se explica más en la ventana emergente de Android despido


Creé un ejemplo de trabajo basado en esta publicación de Grupos de Google.

Para crear un PopupWindow que funcione simple, deberá hacer lo siguiente:

  1. Cree un diseño XML que describa la Vista que se representará dentro de PopupWindow.
  2. Invoque PopupWindow inflando el diseño XML y asigne la "vista padre" apropiada 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);


Obtienes la invisibilidad porque no estableciste el color de fondo del diseño en el que estás inflado. Configúralo como android: background = "# 778899", y definitivamente puedes ver las cosas