在视图类中的画布上显示弹出窗口

时间:2014-03-20 16:35:13

标签: android canvas android-view android-popupwindow

我有一个视图类,可以在画布上绘制不同颜色的圆圈。

我想在点击圆圈时显示圆圈附近的弹出窗口以显示圆圈的颜色。现在我在尝试创建弹出窗口时遇到问题。

大多数教程都在活动类上执行弹出窗口,因此我找不到要引用的示例。

我的代码:

@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>

1 个答案:

答案 0 :(得分: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);

或类似的东西。