web-dev-qa-db-ja.com

Android v2.0?を使用したPopupWindowクラスの簡単な例はありますか?

オンラインで見たところ、PopupWindowクラスの実用的な例を見つけることができませんでした。私がオンラインで見つけたコード例は、コンパイルしても動作しないか、または削除されたメソッド(Activity.getViewInflate())など)を使用しています。

PopupWindowを表示する単純なworkingの例はありますか?

51
Todd

このGoogleグループの投稿 に基づいて実用的な例を作成しました

シンプルで機能するPopupWindowを作成するには、次のことを行う必要があります。

  1. PopupWindow内にレンダリングされるビューを記述するレイアウトXMLを作成します。
  2. レイアウトXMLを拡張してPopupWindowを呼び出し、適切な「親ビュー」をポップアップに割り当てます。

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コード:

    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

私の知る限り、AbsoluteLayoutは動作します(pls確認) http://sree.cc/google/Android/android-popup -window 。ポップアップを右に表示しましたが、LinearLayoutはすべての要素を表示していませんでした。しかし、AbsoluteLayoutは非推奨です!

FrameLayoutも機能しますが、公式ドキュメントでは1つのビューを保持するのに適しているだけであるため、ビューの整理は悪夢です。

また、タッチイベントを受信できるようにするには、これを行う必要があります:setBackgroundDrawable(new BitmapDrawable()) ;

Android popup window dismissal でさらに説明されているように

4