51

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

PopupWindow を表示する簡単な実例はありますか?

4

3 に答える 3

78

この 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); 
于 2009-12-28T03:53:03.243 に答える
4

http://sree.cc/google/android/android-popup-windowに見られるように、私の知る限り、AbsoluteLayoutのみが機能します(確認してください)。ポップアップを正しく表示しましたが、LinearLayout はすべての要素を表示していませんでした。しかし、AbsoluteLayout は非推奨です。

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

また、タッチ イベントを受信できるようにするには、次のようにする必要があります

Androidポップアップウィンドウの却下でさらに説明されているように

于 2011-08-27T03:03:34.447 に答える
-1

インフレートされているレイアウトの背景色を設定していないため、非表示になっています.android:background="#778899"として設定してください。

于 2011-12-12T14:17:42.947 に答える