Расположение диалогового окна на экране

У меня есть активность с MapView. У меня есть наложения на этой карте, и я хотел бы позиционировать диалог зависания над элементом, если он постучал.

У меня уже есть собственное собственное диалоговое окно, которое я придумал с собственным макетом и настраиваемым фоном. Моя единственная проблема заключается в том, как сообщить Android, где (в x, y условиях) разместить диалог.

Это еще сложнее, так как знать, что такое диалог x, y. Сначала мне нужно знать ширину и высоту диалога после измерения (так как мне нужно, чтобы вычислить положение относительно моего наложения).

Быстрый поиск Google показал следующее :

Вы можете вызвать 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 () для установки новых значений.

Обратите внимание, что хотя вы можете форсировать определенный размер по полям ширины и высоты, в общем, правильный способ сделать это – позволить окну выполнить нормальный макет и автоматически определить размер окна. Если у вас есть один вид в диалоговом окне, требующий фиксированного размера, такого как 300×200, реализуйте View.onMeasure () для вызова setMeasuredDimension (300, 200). Затем, когда макет иерархии представлений происходит, диалоговому окну присваивается размер, который гарантирует, что ваше представление является таким размером (вероятно, сделать фактическое окно больше, чтобы учесть рамку диалога и украшение).

Надеюсь, это поможет.