是否有一个使用Android v2.0的PopupWindow类的简单示例?

是否有一个使用Android v2.0的PopupWindow类的简单示例?,android,android-popupwindow,Android,Android Popupwindow,我在网上查了一下,找不到PopupWindow类的工作示例。我在网上找到的代码示例要么编译但不起作用,要么正在使用后来被删除的方法(例如Activity.getViewInflate()) 是否有显示弹出窗口的简单工作示例?我根据 要创建简单的工作弹出窗口,您需要执行以下操作: 创建一个布局XML,它描述将在PopupWindow中呈现的视图 通过膨胀布局XML调用PopupWindow,并为弹出窗口指定适当的“父视图” popup_example.xml: <?xml version="

我在网上查了一下,找不到PopupWindow类的工作示例。我在网上找到的代码示例要么编译但不起作用,要么正在使用后来被删除的方法(例如
Activity.getViewInflate())


是否有显示弹出窗口的简单工作示例?

我根据

要创建简单的工作弹出窗口,您需要执行以下操作:

  • 创建一个布局XML,它描述将在PopupWindow中呈现的视图
  • 通过膨胀布局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>
    

    如图所示,仅允许绝对布局工作(请确认)。我已经正确显示了弹出窗口,但LinearLayout并没有显示所有元素。但是绝对布局是不推荐的

    FrameLayout也能工作,但是组织视图是一场噩梦,因为官方文档说它只适合保存一个视图

    另外,要能够接收触摸事件,您需要执行以下操作:setBackgroundDrawable(新的BitmapDrawable())


    正如在

    中进一步解释的那样,您之所以获得不可见性,是因为您没有设置要为其充气的布局的背景颜色。将其设置为android:Background=“#778899”,当我尝试您的示例代码时,您肯定可以看到这些内容,它似乎正在工作,但确实很奇怪。弹出窗口一定会出现,但几乎是完全透明的。我可以在一个主要的GUI按钮上看到TextView的幻影,但是EditText和按钮是完全不可见的。我查看了函数签名,没有找到任何关于不透明度的内容。你能想出任何可能导致这种行为的原因吗?对不起,戴夫,我已经有一段时间没有接触Android了,所以我对这段代码的记忆已经消失了。我发现这个关于不透明度/α的问题非常严重。希望有帮助:弹出窗口完全透明的原因在javadoc for PopupWindow中得到了回答:
    弹出窗口不提供任何背景。这应该由内容视图处理。
    。因此,您的弹出视图布局根目录应该指定一个android:background=“”属性。您能解释一下“根目录容器”的含义吗?它是弹出窗口的起始视图吗?术语
    根容器
    是什么意思?
        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);