Расположение диалога на экране - PullRequest
5 голосов
/ 23 декабря 2010

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

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

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

1 Ответ

11 голосов
/ 23 декабря 2010

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...