0

キャンバスにさまざまな色の円を描画するビュー クラスがあります。

円をクリックして円の色を表示したときに、円の近くにポップアップウィンドウを表示したい。現在、ポップアップウィンドウを作成しようとして問題に直面しています。

チュートリアルのほとんどは、アクティビティ クラスのポップアップ ウィンドウを実行するため、参照する例が見つかりませんでした。

私のコード:

@Override
public boolean onTouchEvent(MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
                    x = event.getX();
            y = event.getY();

                   // Open popup window
                       for(int i =0; i < circles.size(); i++){
            if (buttonClick == true && circles.get(i).contains(x, y)) {

                                   View view = inflate(getContext(),R.layout.popup_layout, null); 
                PopupWindow popup = new PopupWindow(view);
    popup.showAtLocation(MainActivity.returnView(), Gravity.LEFT, (int)x, (int)y);

                        }
                           } 
             break;
}

ポップアップ ウィンドウ xml ファイル

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="@android:color/background_light">
 <LinearLayout 
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="vertical" 
     android:layout_margin="1dp"
     android:background="@android:color/WHITE">
     >
     <LinearLayout 
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:orientation="vertical" 
      android:layout_margin="20dp">
      <TextView
           android:id="@+id/ColorTV"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="Insert Text here" />
      <Button
          android:id="@+id/dismissbtn"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:text="Dismiss" />
      </LinearLayout>
 </LinearLayout>
</LinearLayout>
4

1 に答える 1

0

使用できますPopupWindow。メソッドを使用PopupWindow#showAtLocation (View parent, int gravity, int x, int y)して、ビュー自体を親として使用して、ポップアップを必要な場所に配置します。

したがって、あなたViewの onTouchEvent 内で、次のようにすることができます。

View view = inflate(R.layout.my_popup_view, null); // however you'll inflate your view
PopupWindow popup = new PopupWindow(view, 300, 300, true);
popup.showAtLocation(this, Gravity.LEFT, x, y);

または似たようなもの。

于 2014-03-20T16:49:33.613 に答える