Подтвердить что ты не робот

Android PopupWindow showAsDropDown() не работает должным образом

Я использую PopupWindow с showAsDropDown (anchor). Когда якорь находится в верхней части экрана, он работает нормально, но когда внизу экрана ничего не отображается. Согласно документации для PopupWindow.showAsDropDown(), это должно работать:

http://developer.android.com/reference/android/widget/PopupWindow.html#showAsDropDown%28android.view.View%29

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

Предположительно, всплывающее окно всегда привязывается к нижнему левому углу анкера. Как это исправить?

4b9b3361

Ответ 1

Вы можете попробовать это.. может быть, это помогает

mWindow.showAtLocation(mRootView, Gravity.BOTTOM|Gravity.LEFT, 0, distanceFromTop);

Ответ 2

Я знаю, что это старая ветка, но я решил опубликовать свое решение. Похоже, вы должны явно установить ширину и высоту popupWindow перед вызовом showAsDropDown().

    menuLayout.measure( View.MeasureSpec.UNSPECIFIED, 
                        View.MeasureSpec.UNSPECIFIED );
    int height = menuLayout.getMeasuredHeight();
    int width = menuLayout.getMeasuredWidth();
    popupMenu.setWidth( width );
    popupMenu.setHeight( height );

    popupMenu.showAsDropDown( clickedCell );

В этом случае menuLayout - это вид, отображаемый в popupWindow.