PopupWindow выходит за нижнюю границу экрана - PullRequest
0 голосов
/ 11 октября 2018

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

Когда самый правый элемент всплывающего окна настраивается так, чтобы он находился внутри экрана,

Но когда элемент в нижней части экрана всплывающее окно обрезается (часть за пределами экрана).

Как это исправить?

PopupWindow mDropDownMenu= new PopupWindow(list, WRAP_CONTENT, WRAP_CONTENT);

mDropDownMenu.showAsDropDown(aView);

aView - это элемент GridView.

В документации говорится о showAsDropDown (Просмотреть привязку)

 * Display the content view in a popup window anchored to the bottom-left
 * corner of the anchor view. If there is not enough room on screen to show
 * the popup in its entirety, this method tries to find a parent scroll
 * view to scroll. If no parent scroll view can be scrolled, the
 * bottom-left corner of the popup is pinned at the top left corner of the
 * anchor view.
 *

Но он всегда прикреплен к левому нижнему углу и неидти вверх налево.

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Оказывается, я ДОЛЖЕН установить высоту выпадающего меню, чтобы избежать этой проблемы

List<DropDownListItem> items;

dropDown.setHeight( toPixels( 30 * items.size() ) );
0 голосов
/ 11 октября 2018

Нашел решение.Вы должны измерить вид и установить измерение на PopupWindow.

...
private fun showPopupWindow() {
        val popupView = layoutInflater.inflate(R.layout.standard_popup_window, null)
        popupView.measure(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
        PopupWindow(popupView, popupView.measuredWidth, popupView.measuredHeight).apply {
            setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
            isTouchable = true
            isFocusable = true
            overlapAnchor = true
            width = popupView.measuredWidth
            height = popupView.measuredHeight
            contentView = popupView
            showAsDropDown(fragment_person_details__description)
        }
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...