Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a simple example of the PopupWindow class using Android v2.0?

I looked online and was not able to find a working example of the PopupWindow class. The code examples I found online either compile but do not work, or are using methods which have since been removed (such as Activity.getViewInflate()).

Is there a simple working example that displays a PopupWindow?

like image 591
Todd Avatar asked Dec 28 '09 03:12

Todd


People also ask

How do I create a pop up screen on my Android?

Use setWidth(int) and setHeight(int) . Set the layout type for this window. Display the content view in a popup window anchored to the bottom-left corner of the anchor view. Displays the content view in a popup window anchored to the corner of another view.

Where is popup in android?

It is created inside the res/menu directory.


2 Answers

I created a working example based on this Google Groups post.

To create a simple working PopupWindow, you'll need to do the following:

  1. Create a layout XML which describes the View that will be rendered within the PopupWindow.
  2. Invoke the PopupWindow by inflating the layout XML, and assign the appropriate "parent view" to the 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> 

Java code:

    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);  
like image 61
Todd Avatar answered Sep 21 '22 13:09

Todd


AFAIK only the AbsoluteLayout works(pls confirm), as seen on http://sree.cc/google/android/android-popup-window . I've shown the popup right, but LinearLayout was not showing all elements. But AbsoluteLayout is deprecated!

FrameLayout also works, but organizing views is a nightmare since the official documentation says it is only good for holding one view.

Also, to be able to receive touch events, you need to do this: setBackgroundDrawable(new BitmapDrawable());

as further explained at Android popup window dismissal

like image 31
Ravindranath Akila Avatar answered Sep 19 '22 13:09

Ravindranath Akila