Android:PopupWindow.showAtLocation()

5
有人能告诉我函数PopupWindow.showAtLocation(View **parent**,int w,int h);中参数"parent"的详细解释吗? 谢谢!
2个回答

10

安卓窗口管理器确保弹出窗口显示在显示它的活动之上。为了让窗口管理器执行此操作,它需要知道相应活动的窗口。由于View位于窗口内部,如果知道活动窗口内的View,则它知道活动所在的窗口。

使用parent参数,您可以说“我想要在View parent所在的窗口中,将弹出窗口置于活动之上”。


谢谢,但你确定吗?:-> - Rocky
1
根据对Android平台源代码的检查,我非常确信。 - Martin Nordholts
不仅适用于“活动”,这也涉及到“对话框”窗口。 - Pointer Null

5
这里的javadoc中可以看到,它说道:

parent - 从中获取getWindowToken()令牌的父视图

快速查看getWindowToken()的javadoc,可以得到以下解释:

public IBinder getWindowToken ()

自API Level 1开始。检索用于标识此视图所附加到的窗口的唯一标记。

返回窗口的令牌以在WindowManager.LayoutParams.token中使用。

这意味着“parent”视图是任何附加到当前窗口的视图,以便PopupWindow可以获取对窗口的引用。它不用于定位或任何其他东西-实际上,如果稍微工作一下,您可以创建一个虚拟视图,它只会从getWindowToken()方法传递相关的IBinder对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接