在屏幕上定位对话框

时间:2010-12-23 13:06:38

标签: android dialog

我有一个MapView活动。我在地图上覆盖了我想在项目上点击一个悬停对话框。

我已经拥有了自己的自定义对话框,我用自己的布局和自定义背景编写了这个对话框。我唯一的问题是如何告诉Android在哪里(x,y术语)定位对话框。

因为知道对话框x,y是什么,所以更复杂。我首先需要知道测量后对话框的宽度和高度(因为我需要计算相对于叠加的位置)。

1 个答案:

答案 0 :(得分:11)

快速的Google搜索提出了the following

您可以调用getWindow()。getAttributes()来检索窗口的WindowManager.LayoutParams。这包含以下涉及窗口放置的字段:

http://code.google.com/android/reference/android/view/ViewGroup.LayoutParams.html#width http://code.google.com/android/reference/android/view/ViewGroup.LayoutParams.html#height http://code.google.com/android/reference/android/view/WindowManager.LayoutParams.html#gravity http://code.google.com/android/reference/android/view/WindowManager.LayoutParams.html#x http://code.google.com/android/reference/android/view/WindowManager.LayoutParams.html#y

进行所需的更改后,使用getWindow()。setAttributes()来安装新值。

请注意,虽然您可以通过宽度和高度字段强制特定大小,但通常正确的方法是让窗口执行其正常布局并自动确定窗口大小。如果对话框中有一个想要固定大小的视图,例如300x200,请实现View.onMeasure()以调用setMeasuredDimension(300,200)。然后,当视图层次结构布局发生时,对话框窗口将被赋予一个大小,以确保您的视图是该维度(可能使实际窗口更大以考虑对话框框架和装饰)。

希望有所帮助。