showAsDropDown Gravity параметр не работает - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь центрировать горизонтально PopUpWindow на привязанном виде, но параметр Gravity.CENTER игнорируется.

Я использую этот метод:

popupWindow.showAsDropDown(anchorView, 0, 0, Gravity.CENTER);

Независимо от того, какое значение гравитации CENTER я ввожу (также TOP или BOTTOM не работают), всплывающее окно всегда отображается в одном и том же месте: в верхнем левом углу привязки, если я не использую значения START или END.

Документация и javaDoc не содержат никаких ограничений на значения, которые он принимает, поэтому я предполагаю, что он также принимает любое из значений CENTER, TOP и BOTTOM: https://developer.android.com/reference/android/widget/PopupWindow#showAsDropDown(android.view.View,%20int,%20int,%20int)

Я также проверял это с помощью якорявиды, которые меньше, равны и больше, чем всплывающее окно, и всплывающее окно настроено так, чтобы не заполнять ширину экрана, как предполагалось.

Похоже, что этот метод ничем не отличается от эквивалентного методаэто не принимает параметр гравитации

popupWindow.showAsDropDown(anchorView, 0, 0);

Это ошибка или это не так, как предполагается использовать?

1 Ответ

0 голосов
/ 06 февраля 2019

Для PopupWindow.showAsDropDown(), кажется, что работает должным образом, прослеживая через его источник, вы можете в конечном итоге увидеть, что параметр гравитации предназначен только для горизонтальных значений.

Отслеживаниезначение gravity из PopupWindow.showAsDropDown () до PopupWindow.findDropDownPosition () , мы уже можем увидеть подсказку @param gravity horizontal gravity specifying popup alignment

Затем на шаг глубже Gravity.getAbsoluteGravity () также намекает на то же самое @param gravity The gravity to convert to absolute (horizontal) values.

Но я верю, что вы хотите достичь в Показать централизованное окно PopupWindow , которое используетPopupWindow.showAtLocation()

PopupWindow.showAtLocation (Просмотреть родительский объект, int gravity, int x, int y)

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